On Fri 29-11-24 14:02:24, Christian Brauner wrote: > Now that we have a unified inode number handling model remove the custom > ida-based allocation for 32bit. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/pidfs.c | 46 +++++----------------------------------------- > 1 file changed, 5 insertions(+), 41 deletions(-) > > diff --git a/fs/pidfs.c b/fs/pidfs.c > index 0bdd9c525b80895d33f2eae5e8e375788580072f..ff4f25078f3d983bce630e597adbb12262e5d727 100644 > --- a/fs/pidfs.c > +++ b/fs/pidfs.c > @@ -371,40 +371,6 @@ struct pid *pidfd_pid(const struct file *file) > > static struct vfsmount *pidfs_mnt __ro_after_init; > > -#if BITS_PER_LONG == 32 > -/* > - * Provide a fallback mechanism for 32-bit systems so processes remain > - * reliably comparable by inode number even on those systems. > - */ > -static DEFINE_IDA(pidfd_inum_ida); > - > -static int pidfs_inum(struct pid *pid, unsigned long *ino) > -{ > - int ret; > - > - ret = ida_alloc_range(&pidfd_inum_ida, RESERVED_PIDS + 1, > - UINT_MAX, GFP_ATOMIC); > - if (ret < 0) > - return -ENOSPC; > - > - *ino = ret; > - return 0; > -} > - > -static inline void pidfs_free_inum(unsigned long ino) > -{ > - if (ino > 0) > - ida_free(&pidfd_inum_ida, ino); > -} > -#else > -static inline int pidfs_inum(struct pid *pid, unsigned long *ino) > -{ > - *ino = pid->ino; > - return 0; > -} > -#define pidfs_free_inum(ino) ((void)(ino)) > -#endif > - > /* > * The vfs falls back to simple_setattr() if i_op->setattr() isn't > * implemented. Let's reject it completely until we have a clean > @@ -456,7 +422,6 @@ static void pidfs_evict_inode(struct inode *inode) > > clear_inode(inode); > put_pid(pid); > - pidfs_free_inum(inode->i_ino); > } > > static const struct super_operations pidfs_sops = { > @@ -482,17 +447,16 @@ static const struct dentry_operations pidfs_dentry_operations = { > > static int pidfs_init_inode(struct inode *inode, void *data) > { > + struct pid *pid = data; > + > inode->i_private = data; > inode->i_flags |= S_PRIVATE; > inode->i_mode |= S_IRWXU; > inode->i_op = &pidfs_inode_operations; > inode->i_fop = &pidfs_file_operations; > - /* > - * Inode numbering for pidfs start at RESERVED_PIDS + 1. This > - * avoids collisions with the root inode which is 1 for pseudo > - * filesystems. > - */ > - return pidfs_inum(data, &inode->i_ino); > + inode->i_ino = pidfs_ino(pid->ino); > + inode->i_generation = pidfs_gen(pid->ino); > + return 0; > } > > static void pidfs_put_data(void *data) > > -- > 2.45.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR