+/* Lock / unlock a volatile file, with different creation flags */
+static void test12(void)
+{
+ int rc;
+ int fd;
+ int gid;
+
+ rc = mkdir(mainpath, 0600);
+ ASSERTF(rc == 0, "mkdir failed for '%s': %s",
+ mainpath, strerror(errno));
+
+ fd = llapi_create_volatile_idx(mainpath, -1, O_CREAT | O_WRONLY);
+ ASSERTF(fd >= 0, "llapi_create_volatile_idx failed on '%s': %s",
+ mainpath, strerror(-fd));
+
+ gid = 34895;
+ rc = llapi_group_lock(fd, gid);
+ ASSERTF(rc == 0, "cannot lock '%s': %s", mainpath, strerror(-rc));
+
+ rc = llapi_group_unlock(fd, gid);
+ ASSERTF(rc == 0, "cannot unlock '%s': %s", mainpath, strerror(-rc));
+
+ close(fd);
+
+ fd = llapi_create_volatile_idx(mainpath, -1,
+ O_CREAT | O_WRONLY | O_LOV_DELAY_CREATE);
+ ASSERTF(fd >= 0, "llapi_create_volatile_idx failed on '%s': %s",
+ mainpath, strerror(-fd));
+
+ gid = 3354895;
+ rc = llapi_group_lock(fd, gid);
+ ASSERTF(rc == 0, "cannot lock '%s': %s", mainpath, strerror(-rc));
+
+ rc = llapi_group_unlock(fd, gid);
+ ASSERTF(rc == 0, "cannot unlock '%s': %s", mainpath, strerror(-rc));
+
+ close(fd);
+
+ fd = llapi_create_volatile_idx(mainpath, -1, O_RDONLY);
+ ASSERTF(fd >= 0, "llapi_create_volatile_idx failed on '%s': %s",
+ mainpath, strerror(-fd));
+
+ gid = 3489655;
+ rc = llapi_group_lock(fd, gid);
+ ASSERTF(rc == 0, "cannot lock '%s': %s", mainpath, strerror(-rc));
+
+ rc = llapi_group_unlock(fd, gid);
+ ASSERTF(rc == 0, "cannot unlock '%s': %s", mainpath, strerror(-rc));
+
+ close(fd);