localalloc.c (a45ff5994c9cde41af627c46abb9f32beae68943) | localalloc.c (d8b2fa657deaa73ff70d40aea9a54997fc0c7fc9) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* -*- mode: c; c-basic-offset: 8; -*- 3 * vim: noexpandtab sw=8 ts=8 sts=0: 4 * 5 * localalloc.c 6 * 7 * Node local data allocation 8 * --- 410 unchanged lines hidden (view full) --- 419 mlog_errno(PTR_ERR(handle)); 420 handle = NULL; 421 goto out_unlock; 422 } 423 424 bh = osb->local_alloc_bh; 425 alloc = (struct ocfs2_dinode *) bh->b_data; 426 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* -*- mode: c; c-basic-offset: 8; -*- 3 * vim: noexpandtab sw=8 ts=8 sts=0: 4 * 5 * localalloc.c 6 * 7 * Node local data allocation 8 * --- 410 unchanged lines hidden (view full) --- 419 mlog_errno(PTR_ERR(handle)); 420 handle = NULL; 421 goto out_unlock; 422 } 423 424 bh = osb->local_alloc_bh; 425 alloc = (struct ocfs2_dinode *) bh->b_data; 426 |
427 alloc_copy = kmalloc(bh->b_size, GFP_NOFS); | 427 alloc_copy = kmemdup(alloc, bh->b_size, GFP_NOFS); |
428 if (!alloc_copy) { 429 status = -ENOMEM; 430 goto out_commit; 431 } | 428 if (!alloc_copy) { 429 status = -ENOMEM; 430 goto out_commit; 431 } |
432 memcpy(alloc_copy, alloc, bh->b_size); | |
433 434 status = ocfs2_journal_access_di(handle, INODE_CACHE(local_alloc_inode), 435 bh, OCFS2_JOURNAL_ACCESS_WRITE); 436 if (status < 0) { 437 mlog_errno(status); 438 goto out_commit; 439 } 440 --- 826 unchanged lines hidden (view full) --- 1267 1268 alloc = (struct ocfs2_dinode *) osb->local_alloc_bh->b_data; 1269 1270 /* We want to clear the local alloc before doing anything 1271 * else, so that if we error later during this operation, 1272 * local alloc shutdown won't try to double free main bitmap 1273 * bits. Make a copy so the sync function knows which bits to 1274 * free. */ | 432 433 status = ocfs2_journal_access_di(handle, INODE_CACHE(local_alloc_inode), 434 bh, OCFS2_JOURNAL_ACCESS_WRITE); 435 if (status < 0) { 436 mlog_errno(status); 437 goto out_commit; 438 } 439 --- 826 unchanged lines hidden (view full) --- 1266 1267 alloc = (struct ocfs2_dinode *) osb->local_alloc_bh->b_data; 1268 1269 /* We want to clear the local alloc before doing anything 1270 * else, so that if we error later during this operation, 1271 * local alloc shutdown won't try to double free main bitmap 1272 * bits. Make a copy so the sync function knows which bits to 1273 * free. */ |
1275 alloc_copy = kmalloc(osb->local_alloc_bh->b_size, GFP_NOFS); | 1274 alloc_copy = kmemdup(alloc, osb->local_alloc_bh->b_size, GFP_NOFS); |
1276 if (!alloc_copy) { 1277 status = -ENOMEM; 1278 mlog_errno(status); 1279 goto bail; 1280 } | 1275 if (!alloc_copy) { 1276 status = -ENOMEM; 1277 mlog_errno(status); 1278 goto bail; 1279 } |
1281 memcpy(alloc_copy, alloc, osb->local_alloc_bh->b_size); | |
1282 1283 status = ocfs2_journal_access_di(handle, 1284 INODE_CACHE(local_alloc_inode), 1285 osb->local_alloc_bh, 1286 OCFS2_JOURNAL_ACCESS_WRITE); 1287 if (status < 0) { 1288 mlog_errno(status); 1289 goto bail; --- 38 unchanged lines hidden --- | 1280 1281 status = ocfs2_journal_access_di(handle, 1282 INODE_CACHE(local_alloc_inode), 1283 osb->local_alloc_bh, 1284 OCFS2_JOURNAL_ACCESS_WRITE); 1285 if (status < 0) { 1286 mlog_errno(status); 1287 goto bail; --- 38 unchanged lines hidden --- |