Stop treating size 0 as unknown size in vnode_create_vobject().
authorPawel Jakub Dawidek <pjd@FreeBSD.org>
Sun, 19 May 2024 01:08:41 +0000 (01:08 +0000)
committerPawel Jakub Dawidek <pjd@FreeBSD.org>
Thu, 23 May 2024 06:08:14 +0000 (06:08 +0000)
commit56a8aca83ab5a93af05f4c8c3a358b71a8392af8
tree4843652689af0f2433e4ff8df39021a992fe3a74
parentd76ef58d566ccf203b21a1c8fea55985f355d4d2
Stop treating size 0 as unknown size in vnode_create_vobject().

Whenever file is created, the vnode_create_vobject() function will
try to determine its size by calling vn_getsize_locked() as size 0
is ambigious: it means either the file size is 0 or the file size
is unknown.

Introduce special value for the size argument: VNODE_NO_SIZE.
Only when it is given, the vnode_create_vobject() will try to obtain
file's size on its own.

Introduce dedicated vnode_disk_create_vobject() for use by
g_vfs_open(), so we don't have to call vn_isdisk() in the common case
(for regular files).

Handle the case of mediasize==0 in g_vfs_open().

Reviewed by: alc, kib, markj, olce
Approved by: oshogbo (mentor), allanjude (mentor)
Differential Revision: https://reviews.freebsd.org/D45244
sys/fs/ext2fs/ext2_vfsops.c
sys/fs/fuse/fuse_node.c
sys/fs/fuse/fuse_vfsops.c
sys/geom/geom_vfs.c
sys/sys/vnode.h
sys/vm/vnode_pager.c