
On Mon, 26 Mar 2012, Russell Coker wrote:
XFS is perfect. You and the multitude of other people over the years that have reported this very same problem of 12 hour old files disappearing, must all be mistaken. QED.
Actually a large part of the problem here is apps expecting things that POSIX doesn't guarantee. XFS delivers fewer of the things that certain app developers expect but that POSIX doesn't require. Programmers should learn about what filesystems are required to deliver and code accordingly, assuming that the success of write() means that data is on disk is just wrong.
What about the success of write()/close()/sleep(43200) ? Because quite frankly, unless the admin has deliberately turned on laptop_mode (and patched the kernel to increase the maximum commit interval to greater than the standard something like 6000 deciseconds, IIRC[1]), then filesystems that aren't committing data to disk after more than 12 hours of a file being closed (his .zip example) are slightly deficient and should be consigned to the nuclear waste disposal facility along with the planetary-scale hydrogen bomb that was used to ensure there were no traces left of such dodgy dodgy code. Because a filesystem that doesn't actually bother to store anything is somewhat write-once-read-never and is thus a complete waste of everyone's time. Data is important, otherwise we would never have bothered to migrate off clay tablets. ( this thread is hilarious - particularly chris masons reply 3rd down. people doing fsync() (and worse, the people insisting you need to use it otherwise youre a data hater) are probably making their data more fragile. xfs? fragile. ext4 without barriers? Probably just fine, thanks very much!: http://thread.gmane.org/gmane.linux.file-systems/23709 ) [1] Yes, I have done this. I like my disks spun down until I issue a manual sync(1). Yes, I use libeatmydata on programs that assume I'm using some crappy filesystem like XFS whereas I prefer filesystems that allow me to do write()/close()/rename() without having to also do fsync(). -- Tim Connors