linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Andreas Dilger <adilger@dilger.ca>
Cc: David Howells <dhowells@redhat.com>,
	linux-fsdevel@vger.kernel.org, linux-nfs@vger.kernel.org,
	linux-cifs@vger.kernel.org, samba-technical@lists.samba.org,
	linux-ext4@vger.kernel.org, wine-devel@winehq.org,
	kfm-devel@kde.org, nautilus-list@gnome.org,
	linux-api@vger.kernel.org, libc-alpha@sourceware.org
Subject: Re: [PATCH 0/6] Extended file stat system call
Date: Sat, 28 Apr 2012 10:58:56 +1000	[thread overview]
Message-ID: <20120428005856.GI9541@dastard> (raw)
In-Reply-To: <F2018580-9ACC-4A63-A8D1-155FA371749A@dilger.ca>

On Fri, Apr 27, 2012 at 01:31:07PM -0600, Andreas Dilger wrote:
> On 2012-04-27, at 7:13 AM, Dave Chinner wrote:
> > Have a look at fs/xfs/xfs_dinode.h. There's a bunch of flags defined
> > at the bottom of the file.
> > 
> > Stuff like the "nodefrag", "nodump", and "prealloc" bits seem fairly
> > generic - they are for indicating that files are to be avoided for
> > defrag or backup purposes, the prealloc bit indicates that fallocate
> > has been used to reserve space on the inode (finding files that space
> > can be punched out of safely), and so on.
> 
> There is already the FS_NODUMP_FL in the standard FS_IOC_GETFLAGS ioctl
> and I expect this to be in statxat() also.

I forgot that was one of the generic flags :/

> In ext4 there was also an
> EXT4_EOFBLOCKS_FL added for inodes with fallocate'd data beyond EOF,
> but Eric thought it was a pain to maintain and it has been deprecated
> in ext4 and e2fsprogs recently.

I'd think that flag is more of a "filesystem implementation
specific" flag than a general "this file contained persistent
preallocation" flag, which is essentially what the XFS flag says.
XFS uses in various ways to optimise extent management on the file
(e.g. don't truncate extents past EOF when closing the file), but it
is not specific to one particular aspect of the preallocation
implementation.

> >> OTOH, there's plenty of uncommitted space, so if we can condense
> >> the hints down to something small, we could perhaps add it later -
> >> but from your paragraph above, it doesn't sound like it'll be small.
> > 
> > Allocation block size, minimum sane IO size (to avoid page cache RMW
> > cycles or DIO zeroing), minimum prefered IO size (e.g. stripe unit),
> > optimal IO size for bandwidth (e.g. stripe width). I don't think
> > there's much more than that which will be really usable by
> > applications.
> 
> I think this is a minimal set that makes sense, and is manageable for
> both the interface and for users.  Even if it isn't 100% correct for
> every file of every filesystem, it still makes sense for many systems.

That's the aim, isn't it? To expose what is useful to the majority
in a simple manner?

> I'd suggest st_frsize (like BSD statvfs() f_frsize) would be the
> minimum fragment or page size, st_iosize (BSD f_iosize) could be
> the optimal IO size, and "st_stripesize" for the minimum preferred RAID/chunk size.

Personally, I think those names are, well, terribly lacking in
obviousness. Something more along the lines of:

	st_blksize		- file block size
	st_alloc_blksize	- allocation block size/alignment
	st_small_io_size	- IO size/alignment that avoids
				  filesystem/page cache RMW
	st_preferred_io_size	- preferred IO size for general
				  usage.
	st_large_io_size	- IO size/alignment for high
				  bandwidth sequential IO

With the aim that applications tend to use st_preferred_io_size for
all general IO (i.e. the default), st_small_io_size for small IO,
IOPS intensive workloads, and st_large_io_size for writing large
chunks of sequential data.

> One could argue that "st_blksize" is used for the "optimal IO size"
> on Linux today, but this is an overloaded term.  It _appears_ to
> represent the filesystem blocksize, which it usually is not, and on
> BSD st_bsize means the minimum blocksize and has a confusingly
> similar name.  Since any application using this API needs to do some
> extra coding already, we may as well give the structure members good
> names that are not ambiguous.

Well said - I couldn't have stated the case better myself. ;)

Cheers,

Dave.

-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2012-04-28  0:58 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-19 14:05 [PATCH 0/6] Extended file stat system call David Howells
2012-04-19 14:06 ` [PATCH 3/6] xstat: AFS: Return extended attributes David Howells
2012-04-19 14:06 ` [PATCH 4/6] xstat: NFS: " David Howells
     [not found]   ` <20120419140653.17272.95035.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2012-04-19 14:35     ` Myklebust, Trond
2012-04-26 13:52   ` David Howells
2012-04-19 14:07 ` [PATCH 5/6] xstat: CIFS: " David Howells
     [not found]   ` <20120419140706.17272.72290.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2012-04-19 15:19     ` Steve French
2012-04-19 16:32 ` [PATCH 0/6] Extended file stat system call Roland McGrath
2012-04-19 21:51   ` Paul Eggert
2012-04-19 23:05     ` Roland McGrath
2012-04-26 14:16     ` David Howells
     [not found]       ` <20173.1335449760-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 18:22         ` Roland McGrath
     [not found]   ` <4F9088D6.9020203-764C0pRuGfqVc3sceRu5cw@public.gmane.org>
2012-04-26 14:04     ` David Howells
     [not found]       ` <19638.1335449047-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 18:24         ` Roland McGrath
2012-04-19 23:29 ` Andreas Dilger
2012-04-26 13:54 ` David Howells
     [not found]   ` <19184.1335448455-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 18:25     ` Roland McGrath
2012-04-27 23:54       ` Paul Eggert
     [not found]   ` <20120426182524.E5ADF2C0EC-j1d2VQoJOwwHfwO+Tb3JRVaTQe2KTcn/@public.gmane.org>
2012-04-26 21:54     ` David Howells
     [not found]       ` <9931.1335477281-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 22:02         ` Roland McGrath
2012-04-26 22:21           ` Nix
2012-04-26 14:25 ` David Howells
2012-04-26 14:54   ` Steve French
     [not found]     ` <CAH2r5mv1Lijdwk5zsQwYJr4Etb6fhrRyNXm-iFCQX+HecboGrQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-26 15:25       ` Myklebust, Trond
2012-04-26 16:56         ` Steve French
     [not found]           ` <CAH2r5mt5af-_hxBRKK72iD5Gr99bo91ec78Rov8EGVEx8=21mA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-26 17:00             ` Myklebust, Trond
2012-04-26 17:03               ` Steve French
     [not found]                 ` <CAH2r5mvmCfLrxRHje6Wx5X84zxPEHwRMUJGsjvWBujMu7w841w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-26 17:06                   ` Myklebust, Trond
     [not found]                     ` <1335460011.9701.30.camel-SyLVLa/KEI9HwK5hSS5vWB2eb7JE58TQ@public.gmane.org>
2012-04-26 17:09                       ` Steve French
     [not found]                         ` <CAH2r5muXk+frkFz9X523Ny=RMwJGeqOPH75G1ToNa5QoMo5SkQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-26 17:10                           ` Steve French
2012-04-26 21:57                       ` David Howells
     [not found]                         ` <10104.1335477476-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 22:05                           ` Roland McGrath
     [not found]                             ` <20120426220552.D98D62C0D3-j1d2VQoJOwwHfwO+Tb3JRVaTQe2KTcn/@public.gmane.org>
2012-04-27  0:33                               ` Myklebust, Trond
2012-04-27  0:30                           ` Myklebust, Trond
2012-04-26 15:52   ` David Howells
2012-04-27  0:29     ` Andreas Dilger
     [not found]     ` <3F302713-B675-4BAA-B2B7-235E03C5975F-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>
2012-04-27  9:19       ` David Howells
2012-04-27  9:39 ` David Howells
     [not found]   ` <4111.1335519545-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-27 13:13     ` Dave Chinner
2012-04-27 15:10       ` J. Bruce Fields
2012-04-27 19:31       ` Andreas Dilger
2012-04-28  0:58         ` Dave Chinner [this message]
2012-05-10  9:51         ` David Howells
     [not found] ` <20120419140558.17272.74360.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2012-04-19 14:06   ` [PATCH 1/6] xstat: Add a pair of system calls to make extended file stats available David Howells
2012-04-19 23:36     ` Andreas Dilger
     [not found]     ` <20120419140612.17272.57774.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2012-04-24 21:29       ` J. Bruce Fields
     [not found]         ` <20120424212911.GA26073-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2012-04-24 22:08           ` Steve French
2012-04-25 14:44           ` Andreas Dilger
2012-04-26 13:45         ` David Howells
     [not found]           ` <18765.1335447954-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 14:28             ` J. Bruce Fields
2012-04-26 17:06               ` Steve French
2012-04-26 13:32     ` David Howells
     [not found]       ` <18195.1335447156-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-27  0:51         ` Dave Chinner
2012-04-27  3:11           ` Andreas Dilger
2012-04-26 13:40     ` David Howells
     [not found]       ` <18533.1335447617-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-04-26 14:23         ` J. Bruce Fields
2012-04-19 14:06   ` [PATCH 2/6] xstat: Ext4: Return extended attributes David Howells
     [not found]     ` <20120419140625.17272.23303.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2012-04-19 16:03       ` Steve French
2012-04-26 13:47     ` David Howells
2012-04-26 17:00       ` Steve French
2012-04-19 14:07   ` [PATCH 6/6] xstat: eCryptFS: " David Howells
2012-04-19 17:11   ` [PATCH 0/6] Extended file stat system call Steve French
2012-04-27  1:06   ` Dave Chinner
2012-04-27  3:22     ` Andreas Dilger
     [not found]       ` <ED5B8F1B-6C99-4516-85FA-A767E94B635F-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>
2012-04-28  0:38         ` Dave Chinner
2012-04-28  0:54           ` Steve French
2012-05-08 20:19   ` Extended file stat: Splitting file- and fs-specific info? David Howells
2012-05-08 21:13     ` Myklebust, Trond
     [not found]     ` <16281.1336508382-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-09  0:24       ` Dave Chinner
2012-05-09  1:09         ` J. Bruce Fields
2012-05-09  4:25           ` Dave Chinner
2012-05-09 11:14             ` J. Bruce Fields
2012-05-09  1:16         ` Andreas Dilger
2012-05-10  9:23         ` David Howells
     [not found]           ` <14477.1336641794-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-10 16:05             ` Andreas Dilger
2012-05-10 17:10             ` Roland McGrath
2012-05-11  8:54               ` Andreas Dilger
2012-05-09  9:21     ` David Howells
     [not found]       ` <20170.1336555274-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-09 11:19         ` Christoph Hellwig
     [not found]           ` <20120509111958.GA11345-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2012-05-09 11:55             ` Bernd Schubert
     [not found]               ` <4FAA5B24.1020306-mPn0NPGs4xGatNDF+KUbs4QuADTiUCJX@public.gmane.org>
2012-05-09 12:05                 ` Christoph Hellwig
     [not found]                   ` <20120509120544.GA17535-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2012-05-09 12:25                     ` Bernd Schubert
2012-05-09 13:51                       ` Andreas Dilger
2012-05-09 14:12                         ` Bernd Schubert
2012-05-10  9:14     ` David Howells

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120428005856.GI9541@dastard \
    --to=david@fromorbit.com \
    --cc=adilger@dilger.ca \
    --cc=dhowells@redhat.com \
    --cc=kfm-devel@kde.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=nautilus-list@gnome.org \
    --cc=samba-technical@lists.samba.org \
    --cc=wine-devel@winehq.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).