(In reply to comment #13)
> If some
> enterprising kernel hacker wants to create a nice, ultra-liberally licensed
> library that turns a dev_t into a boolean: int is_it_safe_to_fsync (dev_t *t);
> then I'd be more than happy to see it used un-conditionally in our
> system-abstraction for Unix / Linux.

I was actually looking into that recently as part of another project and
it's pretty easy. Basically,

1) Stat the file to get the st_dev.
2) Stat each file in /dev/disk/by-uuid to find one with a matching st_rdev.
3) Run realpath() on that file. Now you have the device file holding the 
filesystem.

>From there you can easily look up the filesystem type in many places,
e.g. /etc/mtab, /proc/fs, or /sys/fs. Probably /etc/mtab is your best
bet since it is a generic UNIX thing.

On non-Linux or on Linux without udev you could fall back to stat'ing
each file in /dev rather than /dev/disk/by-uuid.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to libreoffice in Ubuntu.
https://bugs.launchpad.net/bugs/817326

Title:
  [Upstream] Previously-saved LibreOffice document lost by power outage
  (became 0 bytes long) - LibreOffice should call fsync

Status in LibreOffice Productivity Suite:
  Confirmed
Status in “libreoffice” package in Ubuntu:
  Confirmed

Bug description:
  I was working on a document in LibreOffice today while my battery was
  low and so I was frequently saving, which I thought would help me if I
  lost power. However, when I eventually did lose power and later
  rebooted, the document had become 0 bytes long. LibreOffice was not
  able to restore the auto-saved copy either. As a result, I have lost a
  whole week of notes for one of my courses.

  After researching online, it seems that this is caused by the
  application not calling fsync() (or fdatasync()) when saving files.
  Due to delayed allocation in modern filesystems, there is no guarantee
  that the new file's data has actually been written to disk unless the
  application calls fsync. So if an app writes a new file and replaces
  the old one with it without fsync'ing the new one first then there is
  a window of opportunity during which a power failure will result in
  the loss of BOTH versions of the file. In ext4 this window is also
  much larger than in ext3.

  Theodore Tso blogged about this at http://ldn.linuxfoundation.org
  /blog-entry/delayed-allocation-and-zero-length-file-problem and
  http://www.linuxfoundation.org/news-
  media/blogs/browse/2009/03/don%E2%80%99t-fear-fsync. He strongly
  recommends to call fsync in this situation.

  Please update LibreOffice to fsync() saved files so that other users
  do not lose their data like I did.

  ProblemType: Bug
  DistroRelease: Ubuntu 11.04
  Package: libreoffice-core 1:3.3.2-1ubuntu5
  ProcVersionSignature: Ubuntu 2.6.38-8.42-generic 2.6.38.2
  Uname: Linux 2.6.38-8-generic x86_64
  Architecture: amd64
  Date: Wed Jul 27 21:37:02 2011
  InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
  ProcEnviron:
   LANGUAGE=en_US:en
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: libreoffice
  UpgradeStatus: Upgraded to natty on 2011-04-29 (89 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/df-libreoffice/+bug/817326/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to