* [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
@ 2019-02-26 15:27 Amir Goldstein
2019-02-26 16:07 ` Miklos Szeredi
0 siblings, 1 reply; 7+ messages in thread
From: Amir Goldstein @ 2019-02-26 15:27 UTC (permalink / raw)
To: Miklos Szeredi; +Cc: Eddie Horng, linux-unionfs
Overlay file f_pos is the master copy that is preserved
through copy up, but only real fs knows how to SEEK_HOLE/
SEEK_DATA. So we copy f_pos from overlay file, perform the seek
on real file and copy f_pos back to overlay file.
Fixes: d1d04ef8572b ("ovl: stack file ops")
Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
Miklos,
I verified no regressions with xfstests quick tests.
The improved generic/seek tests that I posted to fstests
are failing on master and passing with this fix.
Thanks,
Amir.
fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 84dd957efa24..0d472940ce9e 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
{
- struct inode *realinode = ovl_inode_real(file_inode(file));
+ struct fd real;
+ const struct cred *old_cred;
+ ssize_t ret;
- return generic_file_llseek_size(file, offset, whence,
- realinode->i_sb->s_maxbytes,
- i_size_read(realinode));
+ ret = ovl_real_fdget(file, &real);
+ if (ret)
+ return ret;
+
+ /*
+ * Overlay file f_pos is the master copy that is preserved
+ * through copy up, but only real fs knows how to SEEK_HOLE/
+ * SEEK_DATA.
+ */
+ real.file->f_pos = file->f_pos;
+
+ old_cred = ovl_override_creds(file_inode(file)->i_sb);
+ ret = vfs_llseek(real.file, offset, whence);
+ revert_creds(old_cred);
+
+ file->f_pos = real.file->f_pos;
+
+ fdput(real);
+
+ return ret;
}
static void ovl_file_accessed(struct file *file)
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 15:27 [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA Amir Goldstein
@ 2019-02-26 16:07 ` Miklos Szeredi
2019-02-26 17:20 ` Amir Goldstein
0 siblings, 1 reply; 7+ messages in thread
From: Miklos Szeredi @ 2019-02-26 16:07 UTC (permalink / raw)
To: Amir Goldstein; +Cc: Eddie Horng, overlayfs
On Tue, Feb 26, 2019 at 4:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
>
> Overlay file f_pos is the master copy that is preserved
> through copy up, but only real fs knows how to SEEK_HOLE/
> SEEK_DATA. So we copy f_pos from overlay file, perform the seek
> on real file and copy f_pos back to overlay file.
>
> Fixes: d1d04ef8572b ("ovl: stack file ops")
> Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> ---
>
> Miklos,
>
> I verified no regressions with xfstests quick tests.
> The improved generic/seek tests that I posted to fstests
> are failing on master and passing with this fix.
>
> Thanks,
> Amir.
>
> fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> index 84dd957efa24..0d472940ce9e 100644
> --- a/fs/overlayfs/file.c
> +++ b/fs/overlayfs/file.c
> @@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
>
> static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
> {
> - struct inode *realinode = ovl_inode_real(file_inode(file));
> + struct fd real;
> + const struct cred *old_cred;
> + ssize_t ret;
>
> - return generic_file_llseek_size(file, offset, whence,
> - realinode->i_sb->s_maxbytes,
> - i_size_read(realinode));
> + ret = ovl_real_fdget(file, &real);
> + if (ret)
> + return ret;
> +
> + /*
> + * Overlay file f_pos is the master copy that is preserved
> + * through copy up, but only real fs knows how to SEEK_HOLE/
> + * SEEK_DATA.
> + */
> + real.file->f_pos = file->f_pos;
Parallel invocations of ovl_llseek would mean trouble. I suggest
doing generic_file_llseek_size for SET/CUR/END and doing the recursive
one under ovl inode lock for HOLE/DATA.
Thanks,
Miklos
> +
> + old_cred = ovl_override_creds(file_inode(file)->i_sb);
> + ret = vfs_llseek(real.file, offset, whence);
> + revert_creds(old_cred);
> +
> + file->f_pos = real.file->f_pos;
> +
> + fdput(real);
> +
> + return ret;
> }
>
> static void ovl_file_accessed(struct file *file)
> --
> 2.17.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 16:07 ` Miklos Szeredi
@ 2019-02-26 17:20 ` Amir Goldstein
2019-02-26 20:32 ` Miklos Szeredi
0 siblings, 1 reply; 7+ messages in thread
From: Amir Goldstein @ 2019-02-26 17:20 UTC (permalink / raw)
To: Miklos Szeredi; +Cc: Eddie Horng, overlayfs
On Tue, Feb 26, 2019 at 6:07 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
>
> On Tue, Feb 26, 2019 at 4:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
> >
> > Overlay file f_pos is the master copy that is preserved
> > through copy up, but only real fs knows how to SEEK_HOLE/
> > SEEK_DATA. So we copy f_pos from overlay file, perform the seek
> > on real file and copy f_pos back to overlay file.
> >
> > Fixes: d1d04ef8572b ("ovl: stack file ops")
> > Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
> > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > ---
> >
> > Miklos,
> >
> > I verified no regressions with xfstests quick tests.
> > The improved generic/seek tests that I posted to fstests
> > are failing on master and passing with this fix.
> >
> > Thanks,
> > Amir.
> >
> > fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
> > 1 file changed, 23 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> > index 84dd957efa24..0d472940ce9e 100644
> > --- a/fs/overlayfs/file.c
> > +++ b/fs/overlayfs/file.c
> > @@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
> >
> > static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
> > {
> > - struct inode *realinode = ovl_inode_real(file_inode(file));
> > + struct fd real;
> > + const struct cred *old_cred;
> > + ssize_t ret;
> >
> > - return generic_file_llseek_size(file, offset, whence,
> > - realinode->i_sb->s_maxbytes,
> > - i_size_read(realinode));
> > + ret = ovl_real_fdget(file, &real);
> > + if (ret)
> > + return ret;
> > +
> > + /*
> > + * Overlay file f_pos is the master copy that is preserved
> > + * through copy up, but only real fs knows how to SEEK_HOLE/
> > + * SEEK_DATA.
> > + */
> > + real.file->f_pos = file->f_pos;
>
> Parallel invocations of ovl_llseek would mean trouble. I suggest
> doing generic_file_llseek_size for SET/CUR/END and doing the recursive
> one under ovl inode lock for HOLE/DATA.
>
OK. What about Eddie's question:
If realinode is nested overlay inode, then realinode->i_sb->s_maxbytes
will not reflect the "real" inode's maxbytes.
Not to mention other crazy things that filesystems may do for SET/CUR/END.
Take ext4_llseek() for example, for the less common case (ext3 format inode)
the value of inode->i_sb->s_maxbytes is not used as maxbytes, but a smaller
value.
Would it be worse or better than exclusive lock if we allocate a new
realfile instance for every call to ovl_llseek? (as we do anyway for the
transient state of ro fd of file that was copied up).
Also, I see that we need to use vfs_setpos() to copy f_pos back from
real file in order to reset file->f_version.
Thanks,
Amir.
> Thanks,
> Miklos
>
>
> > +
> > + old_cred = ovl_override_creds(file_inode(file)->i_sb);
> > + ret = vfs_llseek(real.file, offset, whence);
> > + revert_creds(old_cred);
> > +
> > + file->f_pos = real.file->f_pos;
> > +
> > + fdput(real);
> > +
> > + return ret;
> > }
> >
> > static void ovl_file_accessed(struct file *file)
> > --
> > 2.17.1
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 17:20 ` Amir Goldstein
@ 2019-02-26 20:32 ` Miklos Szeredi
2019-02-26 21:16 ` Amir Goldstein
0 siblings, 1 reply; 7+ messages in thread
From: Miklos Szeredi @ 2019-02-26 20:32 UTC (permalink / raw)
To: Amir Goldstein; +Cc: Eddie Horng, overlayfs
On Tue, Feb 26, 2019 at 6:20 PM Amir Goldstein <amir73il@gmail.com> wrote:
>
> On Tue, Feb 26, 2019 at 6:07 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
> >
> > On Tue, Feb 26, 2019 at 4:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
> > >
> > > Overlay file f_pos is the master copy that is preserved
> > > through copy up, but only real fs knows how to SEEK_HOLE/
> > > SEEK_DATA. So we copy f_pos from overlay file, perform the seek
> > > on real file and copy f_pos back to overlay file.
> > >
> > > Fixes: d1d04ef8572b ("ovl: stack file ops")
> > > Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
> > > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > > ---
> > >
> > > Miklos,
> > >
> > > I verified no regressions with xfstests quick tests.
> > > The improved generic/seek tests that I posted to fstests
> > > are failing on master and passing with this fix.
> > >
> > > Thanks,
> > > Amir.
> > >
> > > fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
> > > 1 file changed, 23 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> > > index 84dd957efa24..0d472940ce9e 100644
> > > --- a/fs/overlayfs/file.c
> > > +++ b/fs/overlayfs/file.c
> > > @@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
> > >
> > > static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
> > > {
> > > - struct inode *realinode = ovl_inode_real(file_inode(file));
> > > + struct fd real;
> > > + const struct cred *old_cred;
> > > + ssize_t ret;
> > >
> > > - return generic_file_llseek_size(file, offset, whence,
> > > - realinode->i_sb->s_maxbytes,
> > > - i_size_read(realinode));
> > > + ret = ovl_real_fdget(file, &real);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + /*
> > > + * Overlay file f_pos is the master copy that is preserved
> > > + * through copy up, but only real fs knows how to SEEK_HOLE/
> > > + * SEEK_DATA.
> > > + */
> > > + real.file->f_pos = file->f_pos;
> >
> > Parallel invocations of ovl_llseek would mean trouble. I suggest
> > doing generic_file_llseek_size for SET/CUR/END and doing the recursive
> > one under ovl inode lock for HOLE/DATA.
> >
>
> OK. What about Eddie's question:
> If realinode is nested overlay inode, then realinode->i_sb->s_maxbytes
> will not reflect the "real" inode's maxbytes.
> Not to mention other crazy things that filesystems may do for SET/CUR/END.
> Take ext4_llseek() for example, for the less common case (ext3 format inode)
> the value of inode->i_sb->s_maxbytes is not used as maxbytes, but a smaller
> value.
>
> Would it be worse or better than exclusive lock if we allocate a new
> realfile instance for every call to ovl_llseek? (as we do anyway for the
> transient state of ro fd of file that was copied up).
Hell knows. Simplest is definitely the exclusive inode lock. Then we
can look at optimizing that... I don't think lseek would be
particularly performance sensitive: those would be using the
pread/pwrite interfaces anyway.
Thanks,
Miklos
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 20:32 ` Miklos Szeredi
@ 2019-02-26 21:16 ` Amir Goldstein
2019-02-26 21:20 ` Miklos Szeredi
0 siblings, 1 reply; 7+ messages in thread
From: Amir Goldstein @ 2019-02-26 21:16 UTC (permalink / raw)
To: Miklos Szeredi; +Cc: Eddie Horng, overlayfs
On Tue, Feb 26, 2019 at 10:32 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
>
> On Tue, Feb 26, 2019 at 6:20 PM Amir Goldstein <amir73il@gmail.com> wrote:
> >
> > On Tue, Feb 26, 2019 at 6:07 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
> > >
> > > On Tue, Feb 26, 2019 at 4:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
> > > >
> > > > Overlay file f_pos is the master copy that is preserved
> > > > through copy up, but only real fs knows how to SEEK_HOLE/
> > > > SEEK_DATA. So we copy f_pos from overlay file, perform the seek
> > > > on real file and copy f_pos back to overlay file.
> > > >
> > > > Fixes: d1d04ef8572b ("ovl: stack file ops")
> > > > Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
> > > > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > > > ---
> > > >
> > > > Miklos,
> > > >
> > > > I verified no regressions with xfstests quick tests.
> > > > The improved generic/seek tests that I posted to fstests
> > > > are failing on master and passing with this fix.
> > > >
> > > > Thanks,
> > > > Amir.
> > > >
> > > > fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
> > > > 1 file changed, 23 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> > > > index 84dd957efa24..0d472940ce9e 100644
> > > > --- a/fs/overlayfs/file.c
> > > > +++ b/fs/overlayfs/file.c
> > > > @@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
> > > >
> > > > static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
> > > > {
> > > > - struct inode *realinode = ovl_inode_real(file_inode(file));
> > > > + struct fd real;
> > > > + const struct cred *old_cred;
> > > > + ssize_t ret;
> > > >
> > > > - return generic_file_llseek_size(file, offset, whence,
> > > > - realinode->i_sb->s_maxbytes,
> > > > - i_size_read(realinode));
> > > > + ret = ovl_real_fdget(file, &real);
> > > > + if (ret)
> > > > + return ret;
> > > > +
> > > > + /*
> > > > + * Overlay file f_pos is the master copy that is preserved
> > > > + * through copy up, but only real fs knows how to SEEK_HOLE/
> > > > + * SEEK_DATA.
> > > > + */
> > > > + real.file->f_pos = file->f_pos;
> > >
> > > Parallel invocations of ovl_llseek would mean trouble. I suggest
> > > doing generic_file_llseek_size for SET/CUR/END and doing the recursive
> > > one under ovl inode lock for HOLE/DATA.
> > >
> >
> > OK. What about Eddie's question:
> > If realinode is nested overlay inode, then realinode->i_sb->s_maxbytes
> > will not reflect the "real" inode's maxbytes.
> > Not to mention other crazy things that filesystems may do for SET/CUR/END.
> > Take ext4_llseek() for example, for the less common case (ext3 format inode)
> > the value of inode->i_sb->s_maxbytes is not used as maxbytes, but a smaller
> > value.
> >
> > Would it be worse or better than exclusive lock if we allocate a new
> > realfile instance for every call to ovl_llseek? (as we do anyway for the
> > transient state of ro fd of file that was copied up).
>
> Hell knows. Simplest is definitely the exclusive inode lock. Then we
> can look at optimizing that... I don't think lseek would be
> particularly performance sensitive: those would be using the
> pread/pwrite interfaces anyway.
>
Just to be clear, so exclusive inode lock and recursive for any type of seek?
To be on the safe side?
Thanks,
Amir.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 21:16 ` Amir Goldstein
@ 2019-02-26 21:20 ` Miklos Szeredi
2019-02-27 6:49 ` Eddie Horng
0 siblings, 1 reply; 7+ messages in thread
From: Miklos Szeredi @ 2019-02-26 21:20 UTC (permalink / raw)
To: Amir Goldstein; +Cc: Eddie Horng, overlayfs
On Tue, Feb 26, 2019 at 10:16 PM Amir Goldstein <amir73il@gmail.com> wrote:
>
> On Tue, Feb 26, 2019 at 10:32 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
> >
> > On Tue, Feb 26, 2019 at 6:20 PM Amir Goldstein <amir73il@gmail.com> wrote:
> > >
> > > On Tue, Feb 26, 2019 at 6:07 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
> > > >
> > > > On Tue, Feb 26, 2019 at 4:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
> > > > >
> > > > > Overlay file f_pos is the master copy that is preserved
> > > > > through copy up, but only real fs knows how to SEEK_HOLE/
> > > > > SEEK_DATA. So we copy f_pos from overlay file, perform the seek
> > > > > on real file and copy f_pos back to overlay file.
> > > > >
> > > > > Fixes: d1d04ef8572b ("ovl: stack file ops")
> > > > > Reported-by: Eddie Horng <eddiehorng.tw@gmail.com>
> > > > > Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > > > > ---
> > > > >
> > > > > Miklos,
> > > > >
> > > > > I verified no regressions with xfstests quick tests.
> > > > > The improved generic/seek tests that I posted to fstests
> > > > > are failing on master and passing with this fix.
> > > > >
> > > > > Thanks,
> > > > > Amir.
> > > > >
> > > > > fs/overlayfs/file.c | 27 +++++++++++++++++++++++----
> > > > > 1 file changed, 23 insertions(+), 4 deletions(-)
> > > > >
> > > > > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> > > > > index 84dd957efa24..0d472940ce9e 100644
> > > > > --- a/fs/overlayfs/file.c
> > > > > +++ b/fs/overlayfs/file.c
> > > > > @@ -145,11 +145,30 @@ static int ovl_release(struct inode *inode, struct file *file)
> > > > >
> > > > > static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
> > > > > {
> > > > > - struct inode *realinode = ovl_inode_real(file_inode(file));
> > > > > + struct fd real;
> > > > > + const struct cred *old_cred;
> > > > > + ssize_t ret;
> > > > >
> > > > > - return generic_file_llseek_size(file, offset, whence,
> > > > > - realinode->i_sb->s_maxbytes,
> > > > > - i_size_read(realinode));
> > > > > + ret = ovl_real_fdget(file, &real);
> > > > > + if (ret)
> > > > > + return ret;
> > > > > +
> > > > > + /*
> > > > > + * Overlay file f_pos is the master copy that is preserved
> > > > > + * through copy up, but only real fs knows how to SEEK_HOLE/
> > > > > + * SEEK_DATA.
> > > > > + */
> > > > > + real.file->f_pos = file->f_pos;
> > > >
> > > > Parallel invocations of ovl_llseek would mean trouble. I suggest
> > > > doing generic_file_llseek_size for SET/CUR/END and doing the recursive
> > > > one under ovl inode lock for HOLE/DATA.
> > > >
> > >
> > > OK. What about Eddie's question:
> > > If realinode is nested overlay inode, then realinode->i_sb->s_maxbytes
> > > will not reflect the "real" inode's maxbytes.
> > > Not to mention other crazy things that filesystems may do for SET/CUR/END.
> > > Take ext4_llseek() for example, for the less common case (ext3 format inode)
> > > the value of inode->i_sb->s_maxbytes is not used as maxbytes, but a smaller
> > > value.
> > >
> > > Would it be worse or better than exclusive lock if we allocate a new
> > > realfile instance for every call to ovl_llseek? (as we do anyway for the
> > > transient state of ro fd of file that was copied up).
> >
> > Hell knows. Simplest is definitely the exclusive inode lock. Then we
> > can look at optimizing that... I don't think lseek would be
> > particularly performance sensitive: those would be using the
> > pread/pwrite interfaces anyway.
> >
>
> Just to be clear, so exclusive inode lock and recursive for any type of seek?
> To be on the safe side?
Yes. As a trivial optimization SEEK_CUR/0 (return current pos) could
be done without messing with underlying fs. Probably same for
SEEK_SET/0.
Looking ahead, inode lock is definitely excessive, since we are not
doing anything to the inode here, so ideally this would be a per-file
mutex, but we've nowhere to put such a thing at the moment.
Thanks,
Miklos
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA
2019-02-26 21:20 ` Miklos Szeredi
@ 2019-02-27 6:49 ` Eddie Horng
0 siblings, 0 replies; 7+ messages in thread
From: Eddie Horng @ 2019-02-27 6:49 UTC (permalink / raw)
To: Miklos Szeredi; +Cc: Amir Goldstein, overlayfs
> > > > OK. What about Eddie's question:
> > > > If realinode is nested overlay inode, then realinode->i_sb->s_maxbytes
> > > > will not reflect the "real" inode's maxbytes.
> > > > Not to mention other crazy things that filesystems may do for SET/CUR/END.
> > > > Take ext4_llseek() for example, for the less common case (ext3 format inode)
> > > > the value of inode->i_sb->s_maxbytes is not used as maxbytes, but a smaller
> > > > value.
> > > >
Hi Amir,
Thanks your detail information and the patch.
I ran into this issue by using a proprietary stacked file system as lower
and the file system does not initial it's s_maxbytes, therefore
caused file larger than 2GB fails lseek. A quick workaround is to set the fs
s_maxbytes to MAX_LFS_FILESIZE, but like you said, for certain cases this might
be a problem.
I have verified this patch with same configuration and the lower inode
f_op->llseek
does get invoked, looks like enough to resolve my particular case.
thanks,
Eddie
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-02-27 6:49 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-26 15:27 [PATCH] ovl: support stacked SEEK_HOLE/SEEK_DATA Amir Goldstein
2019-02-26 16:07 ` Miklos Szeredi
2019-02-26 17:20 ` Amir Goldstein
2019-02-26 20:32 ` Miklos Szeredi
2019-02-26 21:16 ` Amir Goldstein
2019-02-26 21:20 ` Miklos Szeredi
2019-02-27 6:49 ` Eddie Horng
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.