[linux-lvm] fsync() and LVM

Allen, Jack Jack.Allen at mckesson.com
Mon Mar 16 21:57:27 UTC 2009


-----Original Message-----
From: linux-lvm-bounces at redhat.com [mailto:linux-lvm-bounces at redhat.com] On Behalf Of Greg Freemyer
Sent: Monday, March 16, 2009 5:36 PM
To: LVM general discussion and development
Subject: Re: [linux-lvm] fsync() and LVM

On Mon, Mar 16, 2009 at 5:17 PM, Les Mikesell <lesmikesell at gmail.com> wrote:
> Greg Freemyer wrote:
>>>> Those are some very significant subsystems.  I have to believe
>>>> filesystems have another way to implement fsync if barriers are not
>>>> supported in the stack of block susbsystems.
>>> If you can't get the completion status from the underlying layer, how can
>>> a
>>> filesystem possibly implement it?
>> Barriers is a specific technology and they were just implemented in
>> linux around 2005 I think.  (see documentation/barriers.txt)
>> Surely there was a mechanism in place before that.
> I'm not sure that's a reasonable assumption.
>>>> Maybe this discussion needs to move to a filesystem list, since it is
>>>> the filesystem that is responsible for making fsync() work even in the
>>>> absence of barriers.
>>> I though linux ended up doing a sync of the entire outstanding buffered
>>> data
>>> for a partition with horrible performance, at least on ext3.
>> Yes, I understand fsync is horribly slow in ext3 and that may be the
>> reason.  Supposedly much better in ext4.  Still if a userspace app
>> calls fsync and in turn the filesystem does something really slow due
>> to the lack of barriers, then this conversation should be about the
>> poor performance of fsync() when using lvm (or mdraid, or drdb), not
>> the total lack of fsync() support.
> I haven't seen anyone claim yet that there is support for fsync(), which
> must return the status of the completion of the operation to the
> application.  If it does, then the discussion could turn to performance.
> --
>  Les Mikesell
>   lesmikesell at gmail.com

Is your specific interest to ext3?  If so, I suggest you post a
question there along the lines of:

Device Mapper does not support barriers if more than one physical
device is in use by the LV.  If I'm using ext3 on a LV and I call
fsync() from user space, how is fsync() implemented.  Or is it not?

The ext4 list is <linux-ext4 at vger.kernel.org>.  I see some ext3 stuff
posted there, or it may have its own list.


So what happens if there is a database implemented directly on a Logical Volume, not File System involved at all?

Should the fsync man page describe what happens when used on each type of File System, Logical Volume, disk partition and /or combination?

Jack Allen

More information about the linux-lvm mailing list