Hello Amar,
I do the following in worm_create_cbk:
char *filepath = NULL;
inode_path(inode, NULL, &filepath);
if (!filepath) {
gf_log(this->name, GF_LOG_ERROR, "Can't get filepath!");
inode_path(inode, NULL, &filepath);
if (!filepath) {
gf_log(this->name, GF_LOG_ERROR, "Can't get filepath!");
}
Unfortunately I got this in the brick log:
[2020-02-05 10:09:41.880522] E [inode.c:1498:__inode_path] (-->/usr/lib64/glusterfs/5.11/xlator/features/worm.so(+0xb129) [0x7f4657df7129] -->/usr/lib64/libglusterfs.so.0(inode_path+0x31) [0x7f4664e44961] -->/us
r/lib64/libglusterfs.so.0(__inode_path+0x38b) [0x7f4664e448bb] ) 0-: Assertion failed: 0
[2020-02-05 10:09:41.880580] W [inode.c:1500:__inode_path] (-->/usr/lib64/glusterfs/5.11/xlator/features/worm.so(+0xb129) [0x7f4657df7129] -->/usr/lib64/libglusterfs.so.0(inode_path+0x31) [0x7f4664e44961] -->/us
r/lib64/libglusterfs.so.0(__inode_path+0x3d3) [0x7f4664e44903] ) 0-repo2-worm: invalid inode [Invalid argument]
[2020-02-05 10:09:41.880594] E [worm.c:488:worm_create_cbk] 0-repo2-worm: Can't get filepath!
r/lib64/libglusterfs.so.0(__inode_path+0x38b) [0x7f4664e448bb] ) 0-: Assertion failed: 0
[2020-02-05 10:09:41.880580] W [inode.c:1500:__inode_path] (-->/usr/lib64/glusterfs/5.11/xlator/features/worm.so(+0xb129) [0x7f4657df7129] -->/usr/lib64/libglusterfs.so.0(inode_path+0x31) [0x7f4664e44961] -->/us
r/lib64/libglusterfs.so.0(__inode_path+0x3d3) [0x7f4664e44903] ) 0-repo2-worm: invalid inode [Invalid argument]
[2020-02-05 10:09:41.880594] E [worm.c:488:worm_create_cbk] 0-repo2-worm: Can't get filepath!
The inode I use seems to be not valid because inode_path() returns with error. The same with fd->inode. Is there a way to validate the inode before passing it to the function?
Regards
David
Am Di., 4. Feb. 2020 um 17:57 Uhr schrieb Amar Tumballi <amar@xxxxxxxxx>:
On Tue, Feb 4, 2020 at 7:16 PM David Spisla <spisla80@xxxxxxxxx> wrote:Dear Gluster Community,in worm_create_cbk a file gets the xattr "trusted.worm_file" and "trusted.start_time" if worm-file-level is enabled. Now I want to exclude some files in a special folder from the WORM function. Therefore I want to check in worm_create_cbk if the file is in this folder or not. But I don't find a parameter where the filepath is stored. So my alternative solution was, to check it in worm_create (via loc->path) and store a boolean value in frame->local. This boolean value will be used in worm_create_cbk later. But its not my favourite solution.Do you know how to get the filepath in the cbk function?As per FS guidelines, inside the filesystem, we need to handle inodes or parent-inode + basename. If you are looking at building a 'path' info in create_cbk, then i recommend using 'inode_path()' to build the path as per the latest inode table information.-Amar--
_______________________________________________ Community Meeting Calendar: APAC Schedule - Every 2nd and 4th Tuesday at 11:30 AM IST Bridge: https://bluejeans.com/441850968 NA/EMEA Schedule - Every 1st and 3rd Tuesday at 01:00 PM EDT Bridge: https://bluejeans.com/441850968 Gluster-devel mailing list Gluster-devel@xxxxxxxxxxx https://lists.gluster.org/mailman/listinfo/gluster-devel