* [ANNOUNCE] xfsprogs for-next updated
@ 2022-08-30 11:52 Carlos Maiolino
2022-08-30 15:12 ` Darrick J. Wong
0 siblings, 1 reply; 6+ messages in thread
From: Carlos Maiolino @ 2022-08-30 11:52 UTC (permalink / raw)
To: linux-xfs
[-- Attachment #1: Type: text/plain, Size: 2495 bytes --]
Hi folks,
The for-next branch of the xfsprogs repository at:
git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git
has just been updated.
This update contains the initial libxfs sync to Linux 6.0 and should be turned
into -rc0 once it (hopefully) gets some testing (and no complains) for more people.
Please, if any questions, let me know.
The new head of the for-next branch is commit:
d3e53ab7c xfs: fix inode reservation space for removing transaction
New Commits:
Andrey Strachuk (1):
[798d43495] xfs: removed useless condition in function xfs_attr_node_get
Dan Carpenter (1):
[17df7eb7e] xfs: delete unnecessary NULL checks
Darrick J. Wong (6):
[722e81c12] xfs: convert XFS_IFORK_PTR to a static inline helper
[7ff5f1edf] xfs: make inode attribute forks a permanent part of struct xfs_inode
[d4292c669] xfs: use XFS_IFORK_Q to determine the presence of an xattr fork
[4f8415858] xfs: replace XFS_IFORK_Q with a proper predicate function
[eae3e30d4] xfs: replace inode fork size macros with functions
[e373f06a3] xfs: don't leak memory when attr fork loading fails
Dave Chinner (17):
[ef78f876e] xfs: make last AG grow/shrink perag centric
[37dc5890e] xfs: kill xfs_ialloc_pagi_init()
[4330a9e00] xfs: pass perag to xfs_ialloc_read_agi()
[87db57baf] xfs: kill xfs_alloc_pagf_init()
[f9084bd95] xfs: pass perag to xfs_alloc_read_agf()
[bc87af992] xfs: pass perag to xfs_read_agi
[c1030eda4] xfs: pass perag to xfs_read_agf
[1d202c10b] xfs: pass perag to xfs_alloc_get_freelist
[9a73333d9] xfs: pass perag to xfs_alloc_put_freelist
[75c01cccf] xfs: pass perag to xfs_alloc_read_agfl
[83af0d13a] xfs: Pre-calculate per-AG agbno geometry
[8aa34dc9b] xfs: Pre-calculate per-AG agino geometry
[cee2d89ae] xfs: replace xfs_ag_block_count() with perag accesses
[54f6b9e5e] xfs: make is_log_ag() a first class helper
[0b2f4162b] xfs: rework xfs_buf_incore() API
[69535dadf] xfs: track the iunlink list pointer in the xfs_inode
[b9846dc9e] xfs: double link the unlinked inode list
Slark Xiao (1):
[e4a32219d] xfs: Fix typo 'the the' in comment
Xiaole He (1):
[ec36ecd2d] xfs: fix comment for start time value of inode with bigtime enabled
hexiaole (1):
[d3e53ab7c] xfs: fix inode reservation space for removing transaction
--
Carlos Maiolino
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ANNOUNCE] xfsprogs for-next updated
2022-08-30 11:52 [ANNOUNCE] xfsprogs for-next updated Carlos Maiolino
@ 2022-08-30 15:12 ` Darrick J. Wong
2022-08-31 9:43 ` Carlos Maiolino
0 siblings, 1 reply; 6+ messages in thread
From: Darrick J. Wong @ 2022-08-30 15:12 UTC (permalink / raw)
To: Carlos Maiolino; +Cc: linux-xfs
On Tue, Aug 30, 2022 at 01:52:20PM +0200, Carlos Maiolino wrote:
> Hi folks,
>
> The for-next branch of the xfsprogs repository at:
>
> git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git
>
> has just been updated.
>
> This update contains the initial libxfs sync to Linux 6.0 and should be turned
> into -rc0 once it (hopefully) gets some testing (and no complains) for more people.
Wooo, welcome, new maintainer! :)
> Please, if any questions, let me know.
For the repair deadlock fix[1], do you want me to pin the primary
superblock buffer to the xfs_mount like Dave suggested in [2]?
[1] https://lore.kernel.org/linux-xfs/166007921743.3294543.7334567013352169774.stgit@magnolia/
[2] https://lore.kernel.org/linux-xfs/20220811221541.GQ3600936@dread.disaster.area/
--D
>
> The new head of the for-next branch is commit:
>
> d3e53ab7c xfs: fix inode reservation space for removing transaction
>
>
> New Commits:
>
> Andrey Strachuk (1):
> [798d43495] xfs: removed useless condition in function xfs_attr_node_get
>
> Dan Carpenter (1):
> [17df7eb7e] xfs: delete unnecessary NULL checks
>
> Darrick J. Wong (6):
> [722e81c12] xfs: convert XFS_IFORK_PTR to a static inline helper
> [7ff5f1edf] xfs: make inode attribute forks a permanent part of struct xfs_inode
> [d4292c669] xfs: use XFS_IFORK_Q to determine the presence of an xattr fork
> [4f8415858] xfs: replace XFS_IFORK_Q with a proper predicate function
> [eae3e30d4] xfs: replace inode fork size macros with functions
> [e373f06a3] xfs: don't leak memory when attr fork loading fails
>
> Dave Chinner (17):
> [ef78f876e] xfs: make last AG grow/shrink perag centric
> [37dc5890e] xfs: kill xfs_ialloc_pagi_init()
> [4330a9e00] xfs: pass perag to xfs_ialloc_read_agi()
> [87db57baf] xfs: kill xfs_alloc_pagf_init()
> [f9084bd95] xfs: pass perag to xfs_alloc_read_agf()
> [bc87af992] xfs: pass perag to xfs_read_agi
> [c1030eda4] xfs: pass perag to xfs_read_agf
> [1d202c10b] xfs: pass perag to xfs_alloc_get_freelist
> [9a73333d9] xfs: pass perag to xfs_alloc_put_freelist
> [75c01cccf] xfs: pass perag to xfs_alloc_read_agfl
> [83af0d13a] xfs: Pre-calculate per-AG agbno geometry
> [8aa34dc9b] xfs: Pre-calculate per-AG agino geometry
> [cee2d89ae] xfs: replace xfs_ag_block_count() with perag accesses
> [54f6b9e5e] xfs: make is_log_ag() a first class helper
> [0b2f4162b] xfs: rework xfs_buf_incore() API
> [69535dadf] xfs: track the iunlink list pointer in the xfs_inode
> [b9846dc9e] xfs: double link the unlinked inode list
>
> Slark Xiao (1):
> [e4a32219d] xfs: Fix typo 'the the' in comment
>
> Xiaole He (1):
> [ec36ecd2d] xfs: fix comment for start time value of inode with bigtime enabled
>
> hexiaole (1):
> [d3e53ab7c] xfs: fix inode reservation space for removing transaction
>
> --
> Carlos Maiolino
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ANNOUNCE] xfsprogs for-next updated
2022-08-30 15:12 ` Darrick J. Wong
@ 2022-08-31 9:43 ` Carlos Maiolino
2022-08-31 15:08 ` Darrick J. Wong
0 siblings, 1 reply; 6+ messages in thread
From: Carlos Maiolino @ 2022-08-31 9:43 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs
On Tue, Aug 30, 2022 at 08:12:17AM -0700, Darrick J. Wong wrote:
> On Tue, Aug 30, 2022 at 01:52:20PM +0200, Carlos Maiolino wrote:
> > Hi folks,
> >
> > The for-next branch of the xfsprogs repository at:
> >
> > git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git
> >
> > has just been updated.
> >
> > This update contains the initial libxfs sync to Linux 6.0 and should be turned
> > into -rc0 once it (hopefully) gets some testing (and no complains) for more people.
>
> Wooo, welcome, new maintainer! :)
\o/
>
> > Please, if any questions, let me know.
>
> For the repair deadlock fix[1], do you want me to pin the primary
> superblock buffer to the xfs_mount like Dave suggested in [2]?
I'd rather have it pinned to the xfs_mount as it's often accessed, do you think
it is doable (you mentioned you've ran into many problems with that)?
I didn't have time to try to reproduce those deadlocks yet though.
>
> [1] https://lore.kernel.org/linux-xfs/166007921743.3294543.7334567013352169774.stgit@magnolia/
> [2] https://lore.kernel.org/linux-xfs/20220811221541.GQ3600936@dread.disaster.area/
--
Carlos Maiolino
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ANNOUNCE] xfsprogs for-next updated
2022-08-31 9:43 ` Carlos Maiolino
@ 2022-08-31 15:08 ` Darrick J. Wong
2022-09-01 10:55 ` Carlos Maiolino
0 siblings, 1 reply; 6+ messages in thread
From: Darrick J. Wong @ 2022-08-31 15:08 UTC (permalink / raw)
To: Carlos Maiolino; +Cc: linux-xfs
On Wed, Aug 31, 2022 at 11:43:25AM +0200, Carlos Maiolino wrote:
> On Tue, Aug 30, 2022 at 08:12:17AM -0700, Darrick J. Wong wrote:
> > On Tue, Aug 30, 2022 at 01:52:20PM +0200, Carlos Maiolino wrote:
> > > Hi folks,
> > >
> > > The for-next branch of the xfsprogs repository at:
> > >
> > > git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git
> > >
> > > has just been updated.
> > >
> > > This update contains the initial libxfs sync to Linux 6.0 and should be turned
> > > into -rc0 once it (hopefully) gets some testing (and no complains) for more people.
> >
> > Wooo, welcome, new maintainer! :)
>
> \o/
>
> >
> > > Please, if any questions, let me know.
> >
> > For the repair deadlock fix[1], do you want me to pin the primary
> > superblock buffer to the xfs_mount like Dave suggested in [2]?
>
> I'd rather have it pinned to the xfs_mount as it's often accessed, do you think
> it is doable (you mentioned you've ran into many problems with that)?
Oh, the usual problems of adding a new interface...
1. Who is responsible for setting m_sb_bp?
Should libxfs_mount attach m_sb_bp? Should individual programs decide
to do that if they require the functionality? Should we instead have a
xfs_getsb function that returns m_sb_bp if set, or libxfs_getbufr's a
new buffer and tries to cmpxchg it with the pointer?
What about mkfs, which needs to libxfs_mount before it's even written
anything to disk?
2. Should it be a cached buffer so that any other program (e.g. xfs_db)
doing open-coded accesses of the superblock will get the same cached
buffer, or should it be uncached like the kernel?
If we decide on uncached, this will necessitate a full audit of xfsprogs
to catch open-coded calls to libxfs_getbuf for the primary super, or
else coherency problems will result.
If we decide on using a cached buffer and setting it in libxfs_mount,
then the part of xfs_repair that tears down the buffer cache and
reinitializes it with a different hash size will also have to learn to
brelse m_sb_bp before destroying the cache and re-assign it afterwards.
Alternately, I suppose it could learn to rehash itself.
This is a /lot/ to think about to solve one problem in one program.
> I didn't have time to try to reproduce those deadlocks yet though.
If you modify cache_node_get like this to make reclaim more aggressive:
diff --git a/libxfs/cache.c b/libxfs/cache.c
index 139c7c1b..b5e1bcf8 100644
--- a/libxfs/cache.c
+++ b/libxfs/cache.c
@@ -448,10 +448,10 @@ cache_node_get(
/*
* not found, allocate a new entry
*/
+ priority = cache_shake(cache, priority, false);
node = cache_node_allocate(cache, key);
if (node)
break;
- priority = cache_shake(cache, priority, false);
/*
* We start at 0; if we free CACHE_SHAKE_COUNT we get
* back the same priority, if not we get back priority+1.
It's trivially reproducible with xfs_repair (do not specify -n).
--D
> >
> > [1] https://lore.kernel.org/linux-xfs/166007921743.3294543.7334567013352169774.stgit@magnolia/
> > [2] https://lore.kernel.org/linux-xfs/20220811221541.GQ3600936@dread.disaster.area/
>
> --
> Carlos Maiolino
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [ANNOUNCE] xfsprogs for-next updated
2022-08-31 15:08 ` Darrick J. Wong
@ 2022-09-01 10:55 ` Carlos Maiolino
0 siblings, 0 replies; 6+ messages in thread
From: Carlos Maiolino @ 2022-09-01 10:55 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs
>
> Oh, the usual problems of adding a new interface...
>
> 1. Who is responsible for setting m_sb_bp?
>
> Should libxfs_mount attach m_sb_bp? Should individual programs decide
> to do that if they require the functionality? Should we instead have a
> xfs_getsb function that returns m_sb_bp if set, or libxfs_getbufr's a
> new buffer and tries to cmpxchg it with the pointer?
>
> What about mkfs, which needs to libxfs_mount before it's even written
> anything to disk?
>
> 2. Should it be a cached buffer so that any other program (e.g. xfs_db)
> doing open-coded accesses of the superblock will get the same cached
> buffer, or should it be uncached like the kernel?
>
> If we decide on uncached, this will necessitate a full audit of xfsprogs
> to catch open-coded calls to libxfs_getbuf for the primary super, or
> else coherency problems will result.
>
> If we decide on using a cached buffer and setting it in libxfs_mount,
> then the part of xfs_repair that tears down the buffer cache and
> reinitializes it with a different hash size will also have to learn to
> brelse m_sb_bp before destroying the cache and re-assign it afterwards.
> Alternately, I suppose it could learn to rehash itself.
>
> This is a /lot/ to think about to solve one problem in one program.
Yeah, I do agree. Maybe it's better to go with your initial idea for 6.0, and we
postpone the SB buffer pinning to a later release avoiding people to hit this
issue ASAP?!
>
> > I didn't have time to try to reproduce those deadlocks yet though.
>
> If you modify cache_node_get like this to make reclaim more aggressive:
>
> diff --git a/libxfs/cache.c b/libxfs/cache.c
> index 139c7c1b..b5e1bcf8 100644
> --- a/libxfs/cache.c
> +++ b/libxfs/cache.c
> @@ -448,10 +448,10 @@ cache_node_get(
> /*
> * not found, allocate a new entry
> */
> + priority = cache_shake(cache, priority, false);
> node = cache_node_allocate(cache, key);
> if (node)
> break;
> - priority = cache_shake(cache, priority, false);
> /*
> * We start at 0; if we free CACHE_SHAKE_COUNT we get
> * back the same priority, if not we get back priority+1.
>
> It's trivially reproducible with xfs_repair (do not specify -n).
Thanks, I'm gonna try it :)
>
> --D
>
> > >
> > > [1] https://lore.kernel.org/linux-xfs/166007921743.3294543.7334567013352169774.stgit@magnolia/
> > > [2] https://lore.kernel.org/linux-xfs/20220811221541.GQ3600936@dread.disaster.area/
> >
> > --
> > Carlos Maiolino
--
Carlos Maiolino
^ permalink raw reply [flat|nested] 6+ messages in thread
* [ANNOUNCE] xfsprogs for-next updated
@ 2022-11-16 9:58 Carlos Maiolino
0 siblings, 0 replies; 6+ messages in thread
From: Carlos Maiolino @ 2022-11-16 9:58 UTC (permalink / raw)
To: linux-xfs
Hi,
the xfsprogs for-next branch, located at:
https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/log/?h=for-next
has just been updated to match the master branch. This is just a follow-up sync
for the xfsprogs-6.0.0 release from yesterday, and all staging for the next
release will be done on top of that.
Cheers.
--
Carlos Maiolino
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-11-16 9:59 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-30 11:52 [ANNOUNCE] xfsprogs for-next updated Carlos Maiolino
2022-08-30 15:12 ` Darrick J. Wong
2022-08-31 9:43 ` Carlos Maiolino
2022-08-31 15:08 ` Darrick J. Wong
2022-09-01 10:55 ` Carlos Maiolino
-- strict thread matches above, loose matches on Subject: below --
2022-11-16 9:58 Carlos Maiolino
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).