diff options
| author | Dongsheng Yang <dongsheng.yang@easystack.cn> | 2018-12-18 04:31:48 -0500 |
|---|---|---|
| committer | Ilya Dryomov <idryomov@gmail.com> | 2019-01-07 16:47:48 -0500 |
| commit | 02b2f549d502b46e68b97ea1452fb8853b3327dd (patch) | |
| tree | 415c1a23112a0edc7ec00813f64cb65a9ebec5fd /include | |
| parent | bfeffd155283772bbe78c6a05dec7c0128ee500c (diff) | |
libceph: allow setting abort_on_full for rbd
Introduce a new option abort_on_full, default to false. Then
we can get -ENOSPC when the pool is full, or reaches quota.
[ Don't show abort_on_full in /proc/mounts. ]
Signed-off-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/ceph/libceph.h | 6 | ||||
| -rw-r--r-- | include/linux/ceph/osd_client.h | 1 |
2 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index 68bb09c29ce8..a420c07904bc 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* don't require msg signing feat */ | 35 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* don't require msg signing feat */ |
| 36 | #define CEPH_OPT_TCP_NODELAY (1<<5) /* TCP_NODELAY on TCP sockets */ | 36 | #define CEPH_OPT_TCP_NODELAY (1<<5) /* TCP_NODELAY on TCP sockets */ |
| 37 | #define CEPH_OPT_NOMSGSIGN (1<<6) /* don't sign msgs */ | 37 | #define CEPH_OPT_NOMSGSIGN (1<<6) /* don't sign msgs */ |
| 38 | #define CEPH_OPT_ABORT_ON_FULL (1<<7) /* abort w/ ENOSPC when full */ | ||
| 38 | 39 | ||
| 39 | #define CEPH_OPT_DEFAULT (CEPH_OPT_TCP_NODELAY) | 40 | #define CEPH_OPT_DEFAULT (CEPH_OPT_TCP_NODELAY) |
| 40 | 41 | ||
| @@ -53,7 +54,7 @@ struct ceph_options { | |||
| 53 | unsigned long osd_request_timeout; /* jiffies */ | 54 | unsigned long osd_request_timeout; /* jiffies */ |
| 54 | 55 | ||
| 55 | /* | 56 | /* |
| 56 | * any type that can't be simply compared or doesn't need need | 57 | * any type that can't be simply compared or doesn't need |
| 57 | * to be compared should go beyond this point, | 58 | * to be compared should go beyond this point, |
| 58 | * ceph_compare_options() should be updated accordingly | 59 | * ceph_compare_options() should be updated accordingly |
| 59 | */ | 60 | */ |
| @@ -281,7 +282,8 @@ extern struct ceph_options *ceph_parse_options(char *options, | |||
| 281 | const char *dev_name, const char *dev_name_end, | 282 | const char *dev_name, const char *dev_name_end, |
| 282 | int (*parse_extra_token)(char *c, void *private), | 283 | int (*parse_extra_token)(char *c, void *private), |
| 283 | void *private); | 284 | void *private); |
| 284 | int ceph_print_client_options(struct seq_file *m, struct ceph_client *client); | 285 | int ceph_print_client_options(struct seq_file *m, struct ceph_client *client, |
| 286 | bool show_all); | ||
| 285 | extern void ceph_destroy_options(struct ceph_options *opt); | 287 | extern void ceph_destroy_options(struct ceph_options *opt); |
| 286 | extern int ceph_compare_options(struct ceph_options *new_opt, | 288 | extern int ceph_compare_options(struct ceph_options *new_opt, |
| 287 | struct ceph_client *client); | 289 | struct ceph_client *client); |
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index 7a2af5034278..2294f963dab7 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
| @@ -354,7 +354,6 @@ struct ceph_osd_client { | |||
| 354 | struct rb_root linger_map_checks; | 354 | struct rb_root linger_map_checks; |
| 355 | atomic_t num_requests; | 355 | atomic_t num_requests; |
| 356 | atomic_t num_homeless; | 356 | atomic_t num_homeless; |
| 357 | bool abort_on_full; /* abort w/ ENOSPC when full */ | ||
| 358 | int abort_err; | 357 | int abort_err; |
| 359 | struct delayed_work timeout_work; | 358 | struct delayed_work timeout_work; |
| 360 | struct delayed_work osds_timeout_work; | 359 | struct delayed_work osds_timeout_work; |
