9pfs: fix inode sequencing in 'synth' driver
The 'synth' driver's root node and the 'synth' driver's first subdirectory node falsely share the same inode number (zero), which makes it impossible for 9p clients (i.e. 9p test cases) to distinguish root node and first subdirectory from each other by comparing their QIDs (which are derived by 9p server from driver's inode numbers). Fix this issue by using prefix-increment instead of postfix-increment operator while generating new inode numbers for subdirectories and files. Link: https://lore.kernel.org/qemu-devel/3859307.hTDP4D0zbi@silver/ Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <E1nTpyU-0000yR-9o@lizzy.crudebyte.com>
This commit is contained in:
parent
731340813f
commit
0009df31cb
@ -92,7 +92,7 @@ int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode,
|
||||
}
|
||||
}
|
||||
/* Add the name */
|
||||
node = v9fs_add_dir_node(parent, mode, name, NULL, synth_node_count++);
|
||||
node = v9fs_add_dir_node(parent, mode, name, NULL, ++synth_node_count);
|
||||
v9fs_add_dir_node(node, parent->attr->mode, "..",
|
||||
parent->attr, parent->attr->inode);
|
||||
v9fs_add_dir_node(node, node->attr->mode, ".",
|
||||
@ -130,7 +130,7 @@ int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode,
|
||||
mode = ((mode & 0777) | S_IFREG);
|
||||
node = g_new0(V9fsSynthNode, 1);
|
||||
node->attr = &node->actual_attr;
|
||||
node->attr->inode = synth_node_count++;
|
||||
node->attr->inode = ++synth_node_count;
|
||||
node->attr->nlink = 1;
|
||||
node->attr->read = read;
|
||||
node->attr->write = write;
|
||||
|
Loading…
Reference in New Issue
Block a user