aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSwen Schillig <swen@vnet.ibm.com>2009-08-18 09:43:16 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-05 09:49:21 -0400
commit09a46c6e34ba152169b7400d266d2efb4c391a43 (patch)
tree208b6b62a0f760db3f29551af266e070c0490bea
parenta4623c467ff76f9258555d44d68371e10c5406c2 (diff)
[SCSI] zfcp: Remove the useless ZFCP_REQ_AUTO_CLEANUP flag
The flag ZFCP_REQ_AUTO_CLEANUP was useless as the ZFCP_STATUS_FSFREQ_CLEANUP flag is there for exactly the same purpose. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c80
1 files changed, 45 insertions, 35 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 96c580ee7509..70a978a14f2a 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -13,8 +13,6 @@
13#include "zfcp_ext.h" 13#include "zfcp_ext.h"
14#include "zfcp_dbf.h" 14#include "zfcp_dbf.h"
15 15
16#define ZFCP_REQ_AUTO_CLEANUP 0x00000002
17
18static void zfcp_fsf_request_timeout_handler(unsigned long data) 16static void zfcp_fsf_request_timeout_handler(unsigned long data)
19{ 17{
20 struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; 18 struct zfcp_adapter *adapter = (struct zfcp_adapter *) data;
@@ -703,8 +701,7 @@ static struct fsf_qtcb *zfcp_qtcb_alloc(mempool_t *pool)
703} 701}
704 702
705static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_adapter *adapter, 703static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_adapter *adapter,
706 u32 fsf_cmd, int req_flags, 704 u32 fsf_cmd, mempool_t *pool)
707 mempool_t *pool)
708{ 705{
709 struct qdio_buffer_element *sbale; 706 struct qdio_buffer_element *sbale;
710 struct zfcp_qdio_queue *req_q = &adapter->req_q; 707 struct zfcp_qdio_queue *req_q = &adapter->req_q;
@@ -761,9 +758,6 @@ static struct zfcp_fsf_req *zfcp_fsf_req_create(struct zfcp_adapter *adapter,
761 return ERR_PTR(-EIO); 758 return ERR_PTR(-EIO);
762 } 759 }
763 760
764 if (likely(req_flags & ZFCP_REQ_AUTO_CLEANUP))
765 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
766
767 return req; 761 return req;
768} 762}
769 763
@@ -818,7 +812,7 @@ int zfcp_fsf_status_read(struct zfcp_adapter *adapter)
818 if (zfcp_fsf_req_sbal_get(adapter)) 812 if (zfcp_fsf_req_sbal_get(adapter))
819 goto out; 813 goto out;
820 814
821 req = zfcp_fsf_req_create(adapter, FSF_QTCB_UNSOLICITED_STATUS, 0, 815 req = zfcp_fsf_req_create(adapter, FSF_QTCB_UNSOLICITED_STATUS,
822 adapter->pool.status_read_req); 816 adapter->pool.status_read_req);
823 if (IS_ERR(req)) { 817 if (IS_ERR(req)) {
824 retval = PTR_ERR(req); 818 retval = PTR_ERR(req);
@@ -925,7 +919,7 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long old_req_id,
925 if (zfcp_fsf_req_sbal_get(adapter)) 919 if (zfcp_fsf_req_sbal_get(adapter))
926 goto out; 920 goto out;
927 req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND, 921 req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND,
928 0, adapter->pool.scsi_abort); 922 adapter->pool.scsi_abort);
929 if (IS_ERR(req)) { 923 if (IS_ERR(req)) {
930 req = NULL; 924 req = NULL;
931 goto out; 925 goto out;
@@ -1081,13 +1075,14 @@ int zfcp_fsf_send_ct(struct zfcp_send_ct *ct, mempool_t *pool,
1081 if (zfcp_fsf_req_sbal_get(adapter)) 1075 if (zfcp_fsf_req_sbal_get(adapter))
1082 goto out; 1076 goto out;
1083 1077
1084 req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_GENERIC, 1078 req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_GENERIC, pool);
1085 ZFCP_REQ_AUTO_CLEANUP, pool); 1079
1086 if (IS_ERR(req)) { 1080 if (IS_ERR(req)) {
1087 ret = PTR_ERR(req); 1081 ret = PTR_ERR(req);
1088 goto out; 1082 goto out;
1089 } 1083 }
1090 1084
1085 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1091 ret = zfcp_fsf_setup_ct_els_sbals(req, ct->req, ct->resp, 1086 ret = zfcp_fsf_setup_ct_els_sbals(req, ct->req, ct->resp,
1092 FSF_MAX_SBALS_PER_REQ); 1087 FSF_MAX_SBALS_PER_REQ);
1093 if (ret) 1088 if (ret)
@@ -1189,13 +1184,15 @@ int zfcp_fsf_send_els(struct zfcp_send_els *els)
1189 spin_lock_bh(&adapter->req_q_lock); 1184 spin_lock_bh(&adapter->req_q_lock);
1190 if (zfcp_fsf_req_sbal_get(adapter)) 1185 if (zfcp_fsf_req_sbal_get(adapter))
1191 goto out; 1186 goto out;
1192 req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_ELS, 1187
1193 ZFCP_REQ_AUTO_CLEANUP, NULL); 1188 req = zfcp_fsf_req_create(adapter, FSF_QTCB_SEND_ELS, NULL);
1189
1194 if (IS_ERR(req)) { 1190 if (IS_ERR(req)) {
1195 ret = PTR_ERR(req); 1191 ret = PTR_ERR(req);
1196 goto out; 1192 goto out;
1197 } 1193 }
1198 1194
1195 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1199 ret = zfcp_fsf_setup_ct_els_sbals(req, els->req, els->resp, 2); 1196 ret = zfcp_fsf_setup_ct_els_sbals(req, els->req, els->resp, 2);
1200 1197
1201 if (ret) 1198 if (ret)
@@ -1234,15 +1231,16 @@ int zfcp_fsf_exchange_config_data(struct zfcp_erp_action *erp_action)
1234 spin_lock_bh(&adapter->req_q_lock); 1231 spin_lock_bh(&adapter->req_q_lock);
1235 if (zfcp_fsf_req_sbal_get(adapter)) 1232 if (zfcp_fsf_req_sbal_get(adapter))
1236 goto out; 1233 goto out;
1237 req = zfcp_fsf_req_create(adapter, 1234
1238 FSF_QTCB_EXCHANGE_CONFIG_DATA, 1235 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA,
1239 ZFCP_REQ_AUTO_CLEANUP,
1240 adapter->pool.erp_req); 1236 adapter->pool.erp_req);
1237
1241 if (IS_ERR(req)) { 1238 if (IS_ERR(req)) {
1242 retval = PTR_ERR(req); 1239 retval = PTR_ERR(req);
1243 goto out; 1240 goto out;
1244 } 1241 }
1245 1242
1243 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1246 sbale = zfcp_qdio_sbale_req(req); 1244 sbale = zfcp_qdio_sbale_req(req);
1247 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1245 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1248 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1246 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1278,8 +1276,8 @@ int zfcp_fsf_exchange_config_data_sync(struct zfcp_adapter *adapter,
1278 if (zfcp_fsf_req_sbal_get(adapter)) 1276 if (zfcp_fsf_req_sbal_get(adapter))
1279 goto out_unlock; 1277 goto out_unlock;
1280 1278
1281 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA, 1279 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_CONFIG_DATA, NULL);
1282 0, NULL); 1280
1283 if (IS_ERR(req)) { 1281 if (IS_ERR(req)) {
1284 retval = PTR_ERR(req); 1282 retval = PTR_ERR(req);
1285 goto out_unlock; 1283 goto out_unlock;
@@ -1331,14 +1329,16 @@ int zfcp_fsf_exchange_port_data(struct zfcp_erp_action *erp_action)
1331 spin_lock_bh(&adapter->req_q_lock); 1329 spin_lock_bh(&adapter->req_q_lock);
1332 if (zfcp_fsf_req_sbal_get(adapter)) 1330 if (zfcp_fsf_req_sbal_get(adapter))
1333 goto out; 1331 goto out;
1332
1334 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, 1333 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA,
1335 ZFCP_REQ_AUTO_CLEANUP,
1336 adapter->pool.erp_req); 1334 adapter->pool.erp_req);
1335
1337 if (IS_ERR(req)) { 1336 if (IS_ERR(req)) {
1338 retval = PTR_ERR(req); 1337 retval = PTR_ERR(req);
1339 goto out; 1338 goto out;
1340 } 1339 }
1341 1340
1341 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1342 sbale = zfcp_qdio_sbale_req(req); 1342 sbale = zfcp_qdio_sbale_req(req);
1343 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1343 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1344 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1344 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1378,8 +1378,8 @@ int zfcp_fsf_exchange_port_data_sync(struct zfcp_adapter *adapter,
1378 if (zfcp_fsf_req_sbal_get(adapter)) 1378 if (zfcp_fsf_req_sbal_get(adapter))
1379 goto out_unlock; 1379 goto out_unlock;
1380 1380
1381 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, 0, 1381 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, NULL);
1382 NULL); 1382
1383 if (IS_ERR(req)) { 1383 if (IS_ERR(req)) {
1384 retval = PTR_ERR(req); 1384 retval = PTR_ERR(req);
1385 goto out_unlock; 1385 goto out_unlock;
@@ -1500,15 +1500,15 @@ int zfcp_fsf_open_port(struct zfcp_erp_action *erp_action)
1500 if (zfcp_fsf_req_sbal_get(adapter)) 1500 if (zfcp_fsf_req_sbal_get(adapter))
1501 goto out; 1501 goto out;
1502 1502
1503 req = zfcp_fsf_req_create(adapter, 1503 req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_PORT_WITH_DID,
1504 FSF_QTCB_OPEN_PORT_WITH_DID,
1505 ZFCP_REQ_AUTO_CLEANUP,
1506 adapter->pool.erp_req); 1504 adapter->pool.erp_req);
1505
1507 if (IS_ERR(req)) { 1506 if (IS_ERR(req)) {
1508 retval = PTR_ERR(req); 1507 retval = PTR_ERR(req);
1509 goto out; 1508 goto out;
1510 } 1509 }
1511 1510
1511 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1512 sbale = zfcp_qdio_sbale_req(req); 1512 sbale = zfcp_qdio_sbale_req(req);
1513 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1513 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1514 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1514 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1571,13 +1571,14 @@ int zfcp_fsf_close_port(struct zfcp_erp_action *erp_action)
1571 goto out; 1571 goto out;
1572 1572
1573 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT, 1573 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT,
1574 ZFCP_REQ_AUTO_CLEANUP,
1575 adapter->pool.erp_req); 1574 adapter->pool.erp_req);
1575
1576 if (IS_ERR(req)) { 1576 if (IS_ERR(req)) {
1577 retval = PTR_ERR(req); 1577 retval = PTR_ERR(req);
1578 goto out; 1578 goto out;
1579 } 1579 }
1580 1580
1581 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1581 sbale = zfcp_qdio_sbale_req(req); 1582 sbale = zfcp_qdio_sbale_req(req);
1582 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1583 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1583 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1584 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1646,15 +1647,15 @@ int zfcp_fsf_open_wka_port(struct zfcp_wka_port *wka_port)
1646 if (zfcp_fsf_req_sbal_get(adapter)) 1647 if (zfcp_fsf_req_sbal_get(adapter))
1647 goto out; 1648 goto out;
1648 1649
1649 req = zfcp_fsf_req_create(adapter, 1650 req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_PORT_WITH_DID,
1650 FSF_QTCB_OPEN_PORT_WITH_DID,
1651 ZFCP_REQ_AUTO_CLEANUP,
1652 adapter->pool.erp_req); 1651 adapter->pool.erp_req);
1652
1653 if (unlikely(IS_ERR(req))) { 1653 if (unlikely(IS_ERR(req))) {
1654 retval = PTR_ERR(req); 1654 retval = PTR_ERR(req);
1655 goto out; 1655 goto out;
1656 } 1656 }
1657 1657
1658 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1658 sbale = zfcp_qdio_sbale_req(req); 1659 sbale = zfcp_qdio_sbale_req(req);
1659 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1660 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1660 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1661 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1702,13 +1703,14 @@ int zfcp_fsf_close_wka_port(struct zfcp_wka_port *wka_port)
1702 goto out; 1703 goto out;
1703 1704
1704 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT, 1705 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PORT,
1705 ZFCP_REQ_AUTO_CLEANUP,
1706 adapter->pool.erp_req); 1706 adapter->pool.erp_req);
1707
1707 if (unlikely(IS_ERR(req))) { 1708 if (unlikely(IS_ERR(req))) {
1708 retval = PTR_ERR(req); 1709 retval = PTR_ERR(req);
1709 goto out; 1710 goto out;
1710 } 1711 }
1711 1712
1713 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1712 sbale = zfcp_qdio_sbale_req(req); 1714 sbale = zfcp_qdio_sbale_req(req);
1713 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1715 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1714 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1716 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1793,13 +1795,14 @@ int zfcp_fsf_close_physical_port(struct zfcp_erp_action *erp_action)
1793 goto out; 1795 goto out;
1794 1796
1795 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PHYSICAL_PORT, 1797 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_PHYSICAL_PORT,
1796 ZFCP_REQ_AUTO_CLEANUP,
1797 adapter->pool.erp_req); 1798 adapter->pool.erp_req);
1799
1798 if (IS_ERR(req)) { 1800 if (IS_ERR(req)) {
1799 retval = PTR_ERR(req); 1801 retval = PTR_ERR(req);
1800 goto out; 1802 goto out;
1801 } 1803 }
1802 1804
1805 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1803 sbale = zfcp_qdio_sbale_req(req); 1806 sbale = zfcp_qdio_sbale_req(req);
1804 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1807 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1805 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1808 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -1965,13 +1968,14 @@ int zfcp_fsf_open_unit(struct zfcp_erp_action *erp_action)
1965 goto out; 1968 goto out;
1966 1969
1967 req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_LUN, 1970 req = zfcp_fsf_req_create(adapter, FSF_QTCB_OPEN_LUN,
1968 ZFCP_REQ_AUTO_CLEANUP,
1969 adapter->pool.erp_req); 1971 adapter->pool.erp_req);
1972
1970 if (IS_ERR(req)) { 1973 if (IS_ERR(req)) {
1971 retval = PTR_ERR(req); 1974 retval = PTR_ERR(req);
1972 goto out; 1975 goto out;
1973 } 1976 }
1974 1977
1978 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1975 sbale = zfcp_qdio_sbale_req(req); 1979 sbale = zfcp_qdio_sbale_req(req);
1976 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 1980 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
1977 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 1981 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -2049,14 +2053,16 @@ int zfcp_fsf_close_unit(struct zfcp_erp_action *erp_action)
2049 spin_lock_bh(&adapter->req_q_lock); 2053 spin_lock_bh(&adapter->req_q_lock);
2050 if (zfcp_fsf_req_sbal_get(adapter)) 2054 if (zfcp_fsf_req_sbal_get(adapter))
2051 goto out; 2055 goto out;
2056
2052 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_LUN, 2057 req = zfcp_fsf_req_create(adapter, FSF_QTCB_CLOSE_LUN,
2053 ZFCP_REQ_AUTO_CLEANUP,
2054 adapter->pool.erp_req); 2058 adapter->pool.erp_req);
2059
2055 if (IS_ERR(req)) { 2060 if (IS_ERR(req)) {
2056 retval = PTR_ERR(req); 2061 retval = PTR_ERR(req);
2057 goto out; 2062 goto out;
2058 } 2063 }
2059 2064
2065 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
2060 sbale = zfcp_qdio_sbale_req(req); 2066 sbale = zfcp_qdio_sbale_req(req);
2061 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ; 2067 sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;
2062 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY; 2068 sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
@@ -2353,14 +2359,16 @@ int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *unit,
2353 atomic_inc(&adapter->qdio_outb_full); 2359 atomic_inc(&adapter->qdio_outb_full);
2354 goto out; 2360 goto out;
2355 } 2361 }
2362
2356 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, 2363 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND,
2357 ZFCP_REQ_AUTO_CLEANUP,
2358 adapter->pool.scsi_req); 2364 adapter->pool.scsi_req);
2365
2359 if (IS_ERR(req)) { 2366 if (IS_ERR(req)) {
2360 retval = PTR_ERR(req); 2367 retval = PTR_ERR(req);
2361 goto out; 2368 goto out;
2362 } 2369 }
2363 2370
2371 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
2364 zfcp_unit_get(unit); 2372 zfcp_unit_get(unit);
2365 req->unit = unit; 2373 req->unit = unit;
2366 req->data = scsi_cmnd; 2374 req->data = scsi_cmnd;
@@ -2465,8 +2473,10 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_unit *unit, u8 tm_flags)
2465 spin_lock_bh(&adapter->req_q_lock); 2473 spin_lock_bh(&adapter->req_q_lock);
2466 if (zfcp_fsf_req_sbal_get(adapter)) 2474 if (zfcp_fsf_req_sbal_get(adapter))
2467 goto out; 2475 goto out;
2468 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, 0, 2476
2477 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND,
2469 adapter->pool.scsi_req); 2478 adapter->pool.scsi_req);
2479
2470 if (IS_ERR(req)) { 2480 if (IS_ERR(req)) {
2471 req = NULL; 2481 req = NULL;
2472 goto out; 2482 goto out;
@@ -2537,7 +2547,7 @@ struct zfcp_fsf_req *zfcp_fsf_control_file(struct zfcp_adapter *adapter,
2537 if (zfcp_fsf_req_sbal_get(adapter)) 2547 if (zfcp_fsf_req_sbal_get(adapter))
2538 goto out; 2548 goto out;
2539 2549
2540 req = zfcp_fsf_req_create(adapter, fsf_cfdc->command, 0, NULL); 2550 req = zfcp_fsf_req_create(adapter, fsf_cfdc->command, NULL);
2541 if (IS_ERR(req)) { 2551 if (IS_ERR(req)) {
2542 retval = -EPERM; 2552 retval = -EPERM;
2543 goto out; 2553 goto out;