diff options
| author | Ilya Dryomov <idryomov@gmail.com> | 2016-04-28 10:07:25 -0400 |
|---|---|---|
| committer | Ilya Dryomov <idryomov@gmail.com> | 2016-05-30 17:00:22 -0400 |
| commit | b7ec35b304b64af2830027350cc99d31e6e537c2 (patch) | |
| tree | c578df39d847e08e88db9d6f5e1b7e5cd4df86b5 | |
| parent | 1a695a905c18548062509178b98bc91e67510864 (diff) | |
libceph: change ceph_osdmap_flag() to take osdc
For the benefit of every single caller, take osdc instead of map.
Also, now that osdc->osdmap can't ever be NULL, drop the check.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
| -rw-r--r-- | fs/ceph/file.c | 8 | ||||
| -rw-r--r-- | include/linux/ceph/osd_client.h | 5 | ||||
| -rw-r--r-- | include/linux/ceph/osdmap.h | 5 | ||||
| -rw-r--r-- | net/ceph/osd_client.c | 39 |
4 files changed, 28 insertions, 29 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c index a888df6f2d71..8eeb9f579db5 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c | |||
| @@ -1349,7 +1349,7 @@ static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from) | |||
| 1349 | } | 1349 | } |
| 1350 | 1350 | ||
| 1351 | retry_snap: | 1351 | retry_snap: |
| 1352 | if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL)) { | 1352 | if (ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL)) { |
| 1353 | err = -ENOSPC; | 1353 | err = -ENOSPC; |
| 1354 | goto out; | 1354 | goto out; |
| 1355 | } | 1355 | } |
| @@ -1440,7 +1440,7 @@ retry_snap: | |||
| 1440 | ceph_put_cap_refs(ci, got); | 1440 | ceph_put_cap_refs(ci, got); |
| 1441 | 1441 | ||
| 1442 | if (written >= 0) { | 1442 | if (written >= 0) { |
| 1443 | if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_NEARFULL)) | 1443 | if (ceph_osdmap_flag(osdc, CEPH_OSDMAP_NEARFULL)) |
| 1444 | iocb->ki_flags |= IOCB_DSYNC; | 1444 | iocb->ki_flags |= IOCB_DSYNC; |
| 1445 | 1445 | ||
| 1446 | written = generic_write_sync(iocb, written); | 1446 | written = generic_write_sync(iocb, written); |
| @@ -1672,8 +1672,8 @@ static long ceph_fallocate(struct file *file, int mode, | |||
| 1672 | goto unlock; | 1672 | goto unlock; |
| 1673 | } | 1673 | } |
| 1674 | 1674 | ||
| 1675 | if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) && | 1675 | if (ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) && |
| 1676 | !(mode & FALLOC_FL_PUNCH_HOLE)) { | 1676 | !(mode & FALLOC_FL_PUNCH_HOLE)) { |
| 1677 | ret = -ENOSPC; | 1677 | ret = -ENOSPC; |
| 1678 | goto unlock; | 1678 | goto unlock; |
| 1679 | } | 1679 | } |
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index 19b14862d3e0..1b3b6e155392 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
| @@ -279,6 +279,11 @@ struct ceph_osd_client { | |||
| 279 | struct workqueue_struct *notify_wq; | 279 | struct workqueue_struct *notify_wq; |
| 280 | }; | 280 | }; |
| 281 | 281 | ||
| 282 | static inline bool ceph_osdmap_flag(struct ceph_osd_client *osdc, int flag) | ||
| 283 | { | ||
| 284 | return osdc->osdmap->flags & flag; | ||
| 285 | } | ||
| 286 | |||
| 282 | extern int ceph_osdc_setup(void); | 287 | extern int ceph_osdc_setup(void); |
| 283 | extern void ceph_osdc_cleanup(void); | 288 | extern void ceph_osdc_cleanup(void); |
| 284 | 289 | ||
diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h index ddc426b22d81..9ccf4dbe55f8 100644 --- a/include/linux/ceph/osdmap.h +++ b/include/linux/ceph/osdmap.h | |||
| @@ -189,11 +189,6 @@ static inline bool ceph_osd_is_down(struct ceph_osdmap *map, int osd) | |||
| 189 | return !ceph_osd_is_up(map, osd); | 189 | return !ceph_osd_is_up(map, osd); |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | static inline bool ceph_osdmap_flag(struct ceph_osdmap *map, int flag) | ||
| 193 | { | ||
| 194 | return map && (map->flags & flag); | ||
| 195 | } | ||
| 196 | |||
| 197 | extern char *ceph_osdmap_state_str(char *str, int len, int state); | 192 | extern char *ceph_osdmap_state_str(char *str, int len, int state); |
| 198 | extern u32 ceph_get_primary_affinity(struct ceph_osdmap *map, int osd); | 193 | extern u32 ceph_get_primary_affinity(struct ceph_osdmap *map, int osd); |
| 199 | 194 | ||
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 0160d7d09a1e..79c3bad87e62 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c | |||
| @@ -1276,9 +1276,9 @@ static bool target_should_be_paused(struct ceph_osd_client *osdc, | |||
| 1276 | const struct ceph_osd_request_target *t, | 1276 | const struct ceph_osd_request_target *t, |
| 1277 | struct ceph_pg_pool_info *pi) | 1277 | struct ceph_pg_pool_info *pi) |
| 1278 | { | 1278 | { |
| 1279 | bool pauserd = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD); | 1279 | bool pauserd = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD); |
| 1280 | bool pausewr = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR) || | 1280 | bool pausewr = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSEWR) || |
| 1281 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || | 1281 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) || |
| 1282 | __pool_full(pi); | 1282 | __pool_full(pi); |
| 1283 | 1283 | ||
| 1284 | WARN_ON(pi->id != t->base_oloc.pool); | 1284 | WARN_ON(pi->id != t->base_oloc.pool); |
| @@ -1303,8 +1303,7 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc, | |||
| 1303 | bool force_resend = false; | 1303 | bool force_resend = false; |
| 1304 | bool need_check_tiering = false; | 1304 | bool need_check_tiering = false; |
| 1305 | bool need_resend = false; | 1305 | bool need_resend = false; |
| 1306 | bool sort_bitwise = ceph_osdmap_flag(osdc->osdmap, | 1306 | bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE); |
| 1307 | CEPH_OSDMAP_SORTBITWISE); | ||
| 1308 | enum calc_target_result ct_res; | 1307 | enum calc_target_result ct_res; |
| 1309 | int ret; | 1308 | int ret; |
| 1310 | 1309 | ||
| @@ -1590,9 +1589,9 @@ static void maybe_request_map(struct ceph_osd_client *osdc) | |||
| 1590 | verify_osdc_locked(osdc); | 1589 | verify_osdc_locked(osdc); |
| 1591 | WARN_ON(!osdc->osdmap->epoch); | 1590 | WARN_ON(!osdc->osdmap->epoch); |
| 1592 | 1591 | ||
| 1593 | if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || | 1592 | if (ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) || |
| 1594 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD) || | 1593 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD) || |
| 1595 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR)) { | 1594 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSEWR)) { |
| 1596 | dout("%s osdc %p continuous\n", __func__, osdc); | 1595 | dout("%s osdc %p continuous\n", __func__, osdc); |
| 1597 | continuous = true; | 1596 | continuous = true; |
| 1598 | } else { | 1597 | } else { |
| @@ -1629,19 +1628,19 @@ again: | |||
| 1629 | } | 1628 | } |
| 1630 | 1629 | ||
| 1631 | if ((req->r_flags & CEPH_OSD_FLAG_WRITE) && | 1630 | if ((req->r_flags & CEPH_OSD_FLAG_WRITE) && |
| 1632 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR)) { | 1631 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSEWR)) { |
| 1633 | dout("req %p pausewr\n", req); | 1632 | dout("req %p pausewr\n", req); |
| 1634 | req->r_t.paused = true; | 1633 | req->r_t.paused = true; |
| 1635 | maybe_request_map(osdc); | 1634 | maybe_request_map(osdc); |
| 1636 | } else if ((req->r_flags & CEPH_OSD_FLAG_READ) && | 1635 | } else if ((req->r_flags & CEPH_OSD_FLAG_READ) && |
| 1637 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD)) { | 1636 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD)) { |
| 1638 | dout("req %p pauserd\n", req); | 1637 | dout("req %p pauserd\n", req); |
| 1639 | req->r_t.paused = true; | 1638 | req->r_t.paused = true; |
| 1640 | maybe_request_map(osdc); | 1639 | maybe_request_map(osdc); |
| 1641 | } else if ((req->r_flags & CEPH_OSD_FLAG_WRITE) && | 1640 | } else if ((req->r_flags & CEPH_OSD_FLAG_WRITE) && |
| 1642 | !(req->r_flags & (CEPH_OSD_FLAG_FULL_TRY | | 1641 | !(req->r_flags & (CEPH_OSD_FLAG_FULL_TRY | |
| 1643 | CEPH_OSD_FLAG_FULL_FORCE)) && | 1642 | CEPH_OSD_FLAG_FULL_FORCE)) && |
| 1644 | (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || | 1643 | (ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) || |
| 1645 | pool_full(osdc, req->r_t.base_oloc.pool))) { | 1644 | pool_full(osdc, req->r_t.base_oloc.pool))) { |
| 1646 | dout("req %p full/pool_full\n", req); | 1645 | dout("req %p full/pool_full\n", req); |
| 1647 | pr_warn_ratelimited("FULL or reached pool quota\n"); | 1646 | pr_warn_ratelimited("FULL or reached pool quota\n"); |
| @@ -2280,7 +2279,7 @@ static void send_linger_ping(struct ceph_osd_linger_request *lreq) | |||
| 2280 | struct ceph_osd_request *req = lreq->ping_req; | 2279 | struct ceph_osd_request *req = lreq->ping_req; |
| 2281 | struct ceph_osd_req_op *op = &req->r_ops[0]; | 2280 | struct ceph_osd_req_op *op = &req->r_ops[0]; |
| 2282 | 2281 | ||
| 2283 | if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD)) { | 2282 | if (ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD)) { |
| 2284 | dout("%s PAUSERD\n", __func__); | 2283 | dout("%s PAUSERD\n", __func__); |
| 2285 | return; | 2284 | return; |
| 2286 | } | 2285 | } |
| @@ -3050,7 +3049,7 @@ static int handle_one_map(struct ceph_osd_client *osdc, | |||
| 3050 | bool skipped_map = false; | 3049 | bool skipped_map = false; |
| 3051 | bool was_full; | 3050 | bool was_full; |
| 3052 | 3051 | ||
| 3053 | was_full = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL); | 3052 | was_full = ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL); |
| 3054 | set_pool_was_full(osdc); | 3053 | set_pool_was_full(osdc); |
| 3055 | 3054 | ||
| 3056 | if (incremental) | 3055 | if (incremental) |
| @@ -3088,7 +3087,7 @@ static int handle_one_map(struct ceph_osd_client *osdc, | |||
| 3088 | osdc->osdmap = newmap; | 3087 | osdc->osdmap = newmap; |
| 3089 | } | 3088 | } |
| 3090 | 3089 | ||
| 3091 | was_full &= !ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL); | 3090 | was_full &= !ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL); |
| 3092 | scan_requests(&osdc->homeless_osd, skipped_map, was_full, true, | 3091 | scan_requests(&osdc->homeless_osd, skipped_map, was_full, true, |
| 3093 | need_resend, need_resend_linger); | 3092 | need_resend, need_resend_linger); |
| 3094 | 3093 | ||
| @@ -3174,9 +3173,9 @@ void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg) | |||
| 3174 | if (ceph_check_fsid(osdc->client, &fsid) < 0) | 3173 | if (ceph_check_fsid(osdc->client, &fsid) < 0) |
| 3175 | goto bad; | 3174 | goto bad; |
| 3176 | 3175 | ||
| 3177 | was_pauserd = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD); | 3176 | was_pauserd = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD); |
| 3178 | was_pausewr = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR) || | 3177 | was_pausewr = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSEWR) || |
| 3179 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || | 3178 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) || |
| 3180 | have_pool_full(osdc); | 3179 | have_pool_full(osdc); |
| 3181 | 3180 | ||
| 3182 | /* incremental maps */ | 3181 | /* incremental maps */ |
| @@ -3238,9 +3237,9 @@ done: | |||
| 3238 | * we find out when we are no longer full and stop returning | 3237 | * we find out when we are no longer full and stop returning |
| 3239 | * ENOSPC. | 3238 | * ENOSPC. |
| 3240 | */ | 3239 | */ |
| 3241 | pauserd = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD); | 3240 | pauserd = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSERD); |
| 3242 | pausewr = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR) || | 3241 | pausewr = ceph_osdmap_flag(osdc, CEPH_OSDMAP_PAUSEWR) || |
| 3243 | ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || | 3242 | ceph_osdmap_flag(osdc, CEPH_OSDMAP_FULL) || |
| 3244 | have_pool_full(osdc); | 3243 | have_pool_full(osdc); |
| 3245 | if (was_pauserd || was_pausewr || pauserd || pausewr) | 3244 | if (was_pauserd || was_pausewr || pauserd || pausewr) |
| 3246 | maybe_request_map(osdc); | 3245 | maybe_request_map(osdc); |
