}
extern int
-dm_simplecmd (int task, const char *name) {
+dm_simplecmd (int task, const char *name, int no_flush) {
int r = 0;
struct dm_task *dmt;
goto out;
dm_task_no_open_count(dmt);
+ dm_task_skip_lockfs(dmt);
+
+ if (no_flush)
+ dm_task_no_flush(dmt);
r = dm_task_run(dmt);
int dm_prereq (char *, int, int, int);
-int dm_simplecmd (int, const char *);
+int dm_simplecmd (int, const char *, int);
int dm_addmap (int, const char *, const char *, const char *, uint64_t,
const char *, int);
int dm_map_present (char *);
if (!slices[j].size || !dm_map_present(partname))
continue;
- if (!dm_simplecmd(DM_DEVICE_REMOVE, partname)) {
+ if (!dm_simplecmd(DM_DEVICE_REMOVE,
+ partname, 0)) {
r++;
continue;
}
r++;
}
if (op == DM_DEVICE_RELOAD &&
- !dm_simplecmd(DM_DEVICE_RESUME, partname)) {
+ !dm_simplecmd(DM_DEVICE_RESUME,
+ partname, 1)) {
fprintf(stderr, "resume failed on %s\n",
partname);
r++;
if (op == DM_DEVICE_RELOAD)
dm_simplecmd(DM_DEVICE_RESUME,
- partname);
+ partname, 1);
dm_devn(partname, &slices[j].major,
&slices[j].minor);