hpc / mpifileutils

File utilities designed for scalability and performance.
https://hpc.github.io/mpifileutils
BSD 3-Clause "New" or "Revised" License
162 stars 64 forks source link

Add in initial support for HPSSFS-FUSE #546

Closed hawartens closed 1 year ago

hawartens commented 1 year ago

When the destination filesystem is detected to be "fuse" and the subtype is "hpssfs" we know that we are writing to an HPSS archive using HPSSFS-FUSE. HPSS archives have a concept called "Class of Service" (COS) that defines properties for files that live within that COS. Unfortunately a single "Class of Service" for an HPSSFS-FUSE filesystem is defined at mount time, so all files that are written to the filesystem will all go to the same COS. In many cases, sites have COSes that are based on the size of the files (eg. COSA has small files, COSB has medium sized files, and COSC has large files). If we used mpifileutils to write to an HPSSFS-FUSE filesystem without support for HPSS, the files copied into HPSS would then all be added to the same COS and many of the files would not live where they were intended. An HPSS administrator or the HPSS ChangeCOS process would then have to move the data to the correct COS on the backend (meaning this data was copied twice). In order to avoid this second move of the data, this work allows mpifileutils to send a file size hint, via an ioctl() to the HPSS Core Server so that the file will be copied to the correct COS immediately.

adammoody commented 1 year ago

@hawartens , sorry for the delay. I took a pass on this today. These are just style edits and calling library functions for allocating/freeing memory. I was trying to push the changes back to your original branch, but losing my fight with git. Instead, I pushed to the main repo on a new branch.

https://github.com/hpc/mpifileutils/compare/main...hpss-support

When you get a chance, would you please confirm that I didn't break anything?

Do the changes I made to init/finalize look valid to you?

hawartens commented 1 year ago

@hawartens , sorry for the delay. I took a pass on this today. These are just style edits and calling library functions for allocating/freeing memory. I was trying to push the changes back to your original branch, but losing my fight with git. Instead, I pushed to the main repo on a new branch.

main...hpss-support

When you get a chance, would you please confirm that I didn't break anything?

Do the changes I made to init/finalize look valid to you?

I think it looks good to me! I have a couple comments. Will try to put them inline in your newer branch.