[PATCH 09/23] Add parent inode number/generation for directories

Zach Brown zab at zabbo.net
Wed Apr 9 12:34:43 PDT 2025


On Fri, Apr 04, 2025 at 08:45:25PM +0200, Valerie Aurora wrote:
> Add a parent inode number/generation field to the inode to give us back
> references for directories. For non-directories, this field is empty
> and back references will go in a per-inode btree (TODO).

> @@ -20,7 +20,7 @@
>   */
>  
>  int ngnfs_inode_init(struct ngnfs_inode_txn_ref *itref, struct ngnfs_inode_ino_gen *ig, u32 nlink,
> -		     umode_t mode, u64 nsec)
> +		     umode_t mode, u64 nsec, struct ngnfs_inode_ino_gen *parent_ig)
>  {
>  	struct ngnfs_txn_block *tblk = itref->tblk;
>  	struct ngnfs_inode *ninode = itref->ninode;
> @@ -29,6 +29,13 @@ int ngnfs_inode_init(struct ngnfs_inode_txn_ref *itref, struct ngnfs_inode_ino_g
>  	ngnfs_tblk_assign(tblk, ninode->ig.gen, cpu_to_le64(ig->gen));
>  	ngnfs_tblk_assign(tblk, ninode->size, 0);
>  	ngnfs_tblk_assign(tblk, ninode->version, cpu_to_le64(1));
> +	if (parent_ig != NULL) {
> +		ngnfs_tblk_assign(tblk, ninode->parent_ig.ino, cpu_to_le64(parent_ig->ino));
> +		ngnfs_tblk_assign(tblk, ninode->parent_ig.gen, cpu_to_le64(parent_ig->gen));
> +	} else {
> +		ngnfs_tblk_assign(tblk, ninode->parent_ig.ino, cpu_to_le64(0));
> +		ngnfs_tblk_assign(tblk, ninode->parent_ig.gen, cpu_to_le64(0));
> +	}

Can we get away with requiring callers to pass in a parent ig so we
don't have this case?  It seems like we should be able to.

- z



More information about the ngnfs-devel mailing list