static int local_unlinkat_common(FsContext *ctx, int dirfd, const char *name,

                                 int flags)

{

    int ret = -1;



    if (ctx->export_flags & V9FS_SM_MAPPED_FILE) {

        int map_dirfd;



        if (flags == AT_REMOVEDIR) {

            int fd;



            fd = openat(dirfd, name, O_RDONLY | O_DIRECTORY | O_PATH);

            if (fd == -1) {

                goto err_out;

            }

            /*

             * If directory remove .virtfs_metadata contained in the

             * directory

             */

            ret = unlinkat(fd, VIRTFS_META_DIR, AT_REMOVEDIR);

            close_preserve_errno(fd);

            if (ret < 0 && errno != ENOENT) {

                /*

                 * We didn't had the .virtfs_metadata file. May be file created

                 * in non-mapped mode ?. Ignore ENOENT.

                 */

                goto err_out;

            }

        }

        /*

         * Now remove the name from parent directory

         * .virtfs_metadata directory.

         */

        map_dirfd = openat_dir(dirfd, VIRTFS_META_DIR);

        ret = unlinkat(map_dirfd, name, 0);

        close_preserve_errno(map_dirfd);

        if (ret < 0 && errno != ENOENT) {

            /*

             * We didn't had the .virtfs_metadata file. May be file created

             * in non-mapped mode ?. Ignore ENOENT.

             */

            goto err_out;

        }

    }



    ret = unlinkat(dirfd, name, flags);

err_out:

    return ret;

}

static int local_unlinkat_common(FsContext *ctx, int dirfd, const char *name,

                                 int flags)

{

    int ret = -1;



    if (ctx->export_flags & V9FS_SM_MAPPED_FILE) {

        int map_dirfd;



        if (flags == AT_REMOVEDIR) {

            int fd;



            fd = openat(dirfd, name, O_RDONLY | O_DIRECTORY | O_PATH);

            if (fd == -1) {

                goto err_out;

            }

            







            ret = unlinkat(fd, VIRTFS_META_DIR, AT_REMOVEDIR);

            close_preserve_errno(fd);

            if (ret < 0 && errno != ENOENT) {

                







                goto err_out;

            }

        }

        







        map_dirfd = openat_dir(dirfd, VIRTFS_META_DIR);

        ret = unlinkat(map_dirfd, name, 0);

        close_preserve_errno(map_dirfd);

        if (ret < 0 && errno != ENOENT) {

            







            goto err_out;

        }

    }



    ret = unlinkat(dirfd, name, flags);

err_out:

    return ret;

}

            fd = openat(dirfd, name, O_RDONLY | O_DIRECTORY | O_PATH);
static int FUNC_0(FsContext *VAR_0, int VAR_1, const char *VAR_2,

                                 int VAR_3)

{

    int VAR_4 = -1;



    if (VAR_0->export_flags & V9FS_SM_MAPPED_FILE) {

        int VAR_5;



        if (VAR_3 == AT_REMOVEDIR) {

            int VAR_6;



            VAR_6 = openat(VAR_1, VAR_2, O_RDONLY | O_DIRECTORY | O_PATH);

            if (VAR_6 == -1) {

                goto err_out;

            }

            







            VAR_4 = unlinkat(VAR_6, VIRTFS_META_DIR, AT_REMOVEDIR);

            close_preserve_errno(VAR_6);

            if (VAR_4 < 0 && errno != ENOENT) {

                







                goto err_out;

            }

        }

        







        VAR_5 = openat_dir(VAR_1, VIRTFS_META_DIR);

        VAR_4 = unlinkat(VAR_5, VAR_2, 0);

        close_preserve_errno(VAR_5);

        if (VAR_4 < 0 && errno != ENOENT) {

            







            goto err_out;

        }

    }



    VAR_4 = unlinkat(VAR_1, VAR_2, VAR_3);

err_out:

    return VAR_4;

}

static int FUNC_0(FsContext *VAR_0, int VAR_1, const char *VAR_2,
int VAR_3)
{ int VAR_4 = -1; if (VAR_0->export_flags & V9FS_SM_MAPPED_FILE) { int VAR_5; if (VAR_3 == AT_REMOVEDIR) { int VAR_6; VAR_6 = openat(VAR_1, VAR_2, O_RDONLY | O_DIRECTORY | O_PATH); if (VAR_6 == -1) { goto err_out; } VAR_4 = unlinkat(VAR_6, VIRTFS_META_DIR, AT_REMOVEDIR); close_preserve_errno(VAR_6); if (VAR_4 < 0 && errno != ENOENT) { goto err_out; } } VAR_5 = openat_dir(VAR_1, VIRTFS_META_DIR); VAR_4 = unlinkat(VAR_5, VAR_2, 0); close_preserve_errno(VAR_5); if (VAR_4 < 0 && errno != ENOENT) { goto err_out; } } VAR_4 = unlinkat(VAR_1, VAR_2, VAR_3); err_out:
return VAR_4; }