<div dir="ltr"><div>Hello Amar,</div><div>I do the following in worm_create_cbk:</div><div><br></div><div>char *filepath = NULL;<br>inode_path(inode, NULL, &filepath);<br>if (!filepath) {<br> gf_log(this->name, GF_LOG_ERROR, "Can't get filepath!");</div><div>}</div><div><br></div><div>Unfortunately I got this in the brick log:</div><div>[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<br>r/lib64/libglusterfs.so.0(__inode_path+0x38b) [0x7f4664e448bb] ) 0-: Assertion failed: 0<br>[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<br>r/lib64/libglusterfs.so.0(__inode_path+0x3d3) [0x7f4664e44903] ) 0-repo2-worm: invalid inode [Invalid argument]<br>[2020-02-05 10:09:41.880594] E [worm.c:488:worm_create_cbk] 0-repo2-worm: Can't get filepath!</div><div><br></div><div>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?</div><div><br></div><div>Regards</div><div>David<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Di., 4. Feb. 2020 um 17:57 Uhr schrieb Amar Tumballi <<a href="mailto:amar@kadalu.io">amar@kadalu.io</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 4, 2020 at 7:16 PM David Spisla <<a href="mailto:spisla80@gmail.com" target="_blank">spisla80@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dear Gluster Community,</div><div>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.</div><div> <br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>Do you know how to get the filepath in the cbk function?</div><div><br></div></div></blockquote><div><br></div><div>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. </div><div><br></div><div>-Amar</div></div><br clear="all"><div><br></div>-- <div dir="ltr"><div dir="ltr"><div><a href="https://kadalu.io" target="_blank">https://kadalu.io</a></div><div>Container Storage made easy!</div><div><br></div></div></div></div>
</blockquote></div>