hw/9pfs: make get_st_gen() return ENOTTY error on special files
Currently we silently ignore getversion requests for anything except file or directory. Let's instead return ENOTTY error to indicate that getversion is not supported. It makes implementation consistent on all not-supported cases. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
b9317661d1
commit
1a9978a51a
@ -591,7 +591,8 @@ static int handle_ioc_getversion(FsContext *ctx, V9fsPath *path,
|
|||||||
* We can get fd for regular files and directories only
|
* We can get fd for regular files and directories only
|
||||||
*/
|
*/
|
||||||
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
||||||
return 0;
|
errno = ENOTTY;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
err = handle_open(ctx, path, O_RDONLY, &fid_open);
|
err = handle_open(ctx, path, O_RDONLY, &fid_open);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -1077,7 +1077,8 @@ static int local_ioc_getversion(FsContext *ctx, V9fsPath *path,
|
|||||||
* We can get fd for regular files and directories only
|
* We can get fd for regular files and directories only
|
||||||
*/
|
*/
|
||||||
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
||||||
return 0;
|
errno = ENOTTY;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
err = local_open(ctx, path, O_RDONLY, &fid_open);
|
err = local_open(ctx, path, O_RDONLY, &fid_open);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -1086,7 +1086,8 @@ static int proxy_ioc_getversion(FsContext *fs_ctx, V9fsPath *path,
|
|||||||
* we can get fd for regular files and directories only
|
* we can get fd for regular files and directories only
|
||||||
*/
|
*/
|
||||||
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
if (!S_ISREG(st_mode) && !S_ISDIR(st_mode)) {
|
||||||
return 0;
|
errno = ENOTTY;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
err = v9fs_request(fs_ctx->private, T_GETVERSION, st_gen, "s", path);
|
err = v9fs_request(fs_ctx->private, T_GETVERSION, st_gen, "s", path);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user