Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-5710 all: third batch of corrected typos and grammar errors
[fs/lustre-release.git]
/
lustre
/
lov
/
lov_offset.c
diff --git
a/lustre/lov/lov_offset.c
b/lustre/lov/lov_offset.c
index
568f2ff
..
eeb4747
100644
(file)
--- a/
lustre/lov/lov_offset.c
+++ b/
lustre/lov/lov_offset.c
@@
-1,6
+1,4
@@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@
-28,37
+26,30
@@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
* Lustre is a trademark of Sun Microsystems, Inc.
*/
*/
/*
* This file is part of Lustre, http://www.lustre.org/
* Lustre is a trademark of Sun Microsystems, Inc.
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
#define DEBUG_SUBSYSTEM S_LOV
#define DEBUG_SUBSYSTEM S_LOV
-#ifdef __KERNEL__
#include <libcfs/libcfs.h>
#include <libcfs/libcfs.h>
-#else
-#include <liblustre.h>
-#endif
#include <obd_class.h>
#include <obd_class.h>
-#include <obd_lov.h>
#include "lov_internal.h"
/* compute object size given "stripeno" and the ost size */
#include "lov_internal.h"
/* compute object size given "stripeno" and the ost size */
-obd_size lov_stripe_size(struct lov_stripe_md *lsm, obd_size ost_size,
- int stripeno)
+u64 lov_stripe_size(struct lov_stripe_md *lsm, u64 ost_size, int stripeno)
{
{
-
unsigned long ssize = lsm->lsm_stripe_size;
-
unsigned long stripe_size;
-
obd_off
swidth;
-
obd_size
lov_size;
-
int
magic = lsm->lsm_magic;
+ unsigned long ssize = lsm->lsm_stripe_size;
+ unsigned long stripe_size;
+
loff_t
swidth;
+
loff_t
lov_size;
+
u32
magic = lsm->lsm_magic;
ENTRY;
if (ost_size == 0)
ENTRY;
if (ost_size == 0)
@@
-66,17
+57,30
@@
obd_size lov_stripe_size(struct lov_stripe_md *lsm, obd_size ost_size,
LASSERT(lsm_op_find(magic) != NULL);
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, NULL, &swidth);
LASSERT(lsm_op_find(magic) != NULL);
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, NULL, &swidth);
-
-
/* do_div
(a, b) returns a % b, and a = a / b */
-
stripe_size = do_div
(ost_size, ssize);
-
if (stripe_size)
-
lov_size = ost_size * swidth + stripeno * ssize + stripe_size;
-
else
-
lov_size = (ost_size - 1) * swidth + (stripeno + 1) * ssize;
+
+
/* lov_do_div64
(a, b) returns a % b, and a = a / b */
+
stripe_size = lov_do_div64
(ost_size, ssize);
+ if (stripe_size)
+ lov_size = ost_size * swidth + stripeno * ssize + stripe_size;
+ else
+ lov_size = (ost_size - 1) * swidth + (stripeno + 1) * ssize;
RETURN(lov_size);
}
RETURN(lov_size);
}
+/**
+ * Compute file level page index by stripe level page offset
+ */
+pgoff_t lov_stripe_pgoff(struct lov_stripe_md *lsm, pgoff_t stripe_index,
+ int stripe)
+{
+ loff_t offset;
+
+ offset = lov_stripe_size(lsm, (stripe_index << PAGE_CACHE_SHIFT) + 1,
+ stripe);
+ return offset >> PAGE_CACHE_SHIFT;
+}
+
/* we have an offset in file backed by an lov and want to find out where
* that offset lands in our given stripe of the file. for the easy
* case where the offset is within the stripe, we just have to scale the
/* we have an offset in file backed by an lov and want to find out where
* that offset lands in our given stripe of the file. for the easy
* case where the offset is within the stripe, we just have to scale the
@@
-125,12
+129,14
@@
obd_size lov_stripe_size(struct lov_stripe_md *lsm, obd_size ost_size,
* was moved forward to the start of the stripe in question; 0 when it
* falls in the stripe and no shifting was done; > 0 when the offset
* was outside the stripe and was pulled back to its final byte. */
* was moved forward to the start of the stripe in question; 0 when it
* falls in the stripe and no shifting was done; > 0 when the offset
* was outside the stripe and was pulled back to its final byte. */
-int lov_stripe_offset(struct lov_stripe_md *lsm,
obd_off lov_off
,
-
int stripeno, obd_off
*obdoff)
+int lov_stripe_offset(struct lov_stripe_md *lsm,
loff_t lov_off, int stripeno
,
+
loff_t
*obdoff)
{
{
- unsigned long ssize = lsm->lsm_stripe_size;
- obd_off stripe_off, this_stripe, swidth;
- int magic = lsm->lsm_magic;
+ unsigned long ssize = lsm->lsm_stripe_size;
+ loff_t stripe_off;
+ loff_t this_stripe;
+ loff_t swidth;
+ u32 magic = lsm->lsm_magic;
int ret = 0;
if (lov_off == OBD_OBJECT_EOF) {
int ret = 0;
if (lov_off == OBD_OBJECT_EOF) {
@@
-139,14
+145,13
@@
int lov_stripe_offset(struct lov_stripe_md *lsm, obd_off lov_off,
}
LASSERT(lsm_op_find(magic) != NULL);
}
LASSERT(lsm_op_find(magic) != NULL);
-
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, &lov_off,
&swidth);
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, &lov_off,
&swidth);
-
- /* ll_do_div64(a, b) returns a % b, and a = a / b */
- stripe_off = ll_do_div64(lov_off, swidth);
- this_stripe = (obd_off)stripeno * ssize;
+ /* lov_do_div64(a, b) returns a % b, and a = a / b */
+ stripe_off = lov_do_div64(lov_off, swidth);
+
+ this_stripe = (loff_t)stripeno * ssize;
if (stripe_off < this_stripe) {
stripe_off = 0;
ret = -1;
if (stripe_off < this_stripe) {
stripe_off = 0;
ret = -1;
@@
-182,12
+187,14
@@
int lov_stripe_offset(struct lov_stripe_md *lsm, obd_off lov_off,
* | 0 | 1 | 2 | 0 | 1 | 2 |
* ---------------------------------------------------------------------
*/
* | 0 | 1 | 2 | 0 | 1 | 2 |
* ---------------------------------------------------------------------
*/
-
obd_off lov_size_to_stripe(struct lov_stripe_md *lsm, obd_off
file_size,
-
int stripeno)
+
loff_t lov_size_to_stripe(struct lov_stripe_md *lsm, u64
file_size,
+ int stripeno)
{
{
- unsigned long ssize = lsm->lsm_stripe_size;
- obd_off stripe_off, this_stripe, swidth;
- int magic = lsm->lsm_magic;
+ unsigned long ssize = lsm->lsm_stripe_size;
+ loff_t stripe_off;
+ loff_t this_stripe;
+ loff_t swidth;
+ u32 magic = lsm->lsm_magic;
if (file_size == OBD_OBJECT_EOF)
return OBD_OBJECT_EOF;
if (file_size == OBD_OBJECT_EOF)
return OBD_OBJECT_EOF;
@@
-196,10
+203,10
@@
obd_off lov_size_to_stripe(struct lov_stripe_md *lsm, obd_off file_size,
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, &file_size,
&swidth);
lsm_op_find(magic)->lsm_stripe_by_index(lsm, &stripeno, &file_size,
&swidth);
-
/* ll
_do_div64(a, b) returns a % b, and a = a / b */
-
stripe_off = ll
_do_div64(file_size, swidth);
+
/* lov
_do_div64(a, b) returns a % b, and a = a / b */
+
stripe_off = lov
_do_div64(file_size, swidth);
-
this_stripe = (obd_off
)stripeno * ssize;
+
this_stripe = (loff_t
)stripeno * ssize;
if (stripe_off < this_stripe) {
/* Move to end of previous stripe, or zero */
if (file_size > 0) {
if (stripe_off < this_stripe) {
/* Move to end of previous stripe, or zero */
if (file_size > 0) {
@@
-224,16
+231,16
@@
obd_off lov_size_to_stripe(struct lov_stripe_md *lsm, obd_off file_size,
* that is contained within the lov extent. this returns true if the given
* stripe does intersect with the lov extent. */
int lov_stripe_intersects(struct lov_stripe_md *lsm, int stripeno,
* that is contained within the lov extent. this returns true if the given
* stripe does intersect with the lov extent. */
int lov_stripe_intersects(struct lov_stripe_md *lsm, int stripeno,
-
obd_off start, obd_off
end,
-
obd_off *obd_start, obd_off
*obd_end)
+
loff_t start, loff_t
end,
+
loff_t *obd_start, loff_t
*obd_end)
{
int start_side, end_side;
start_side = lov_stripe_offset(lsm, start, stripeno, obd_start);
end_side = lov_stripe_offset(lsm, end, stripeno, obd_end);
{
int start_side, end_side;
start_side = lov_stripe_offset(lsm, start, stripeno, obd_start);
end_side = lov_stripe_offset(lsm, end, stripeno, obd_end);
-
CDEBUG(D_INODE, "["LPU64"->"LPU64"] -> [(%d) "LPU64"->"LPU
64" (%d)]\n",
- start, end, start_side, *obd_start, *obd_end, end_side);
+
CDEBUG(D_INODE, "["LPD64"->"LPD64"] -> [(%d) "LPD64"->"LPD
64" (%d)]\n",
+ start, end, start_side, *obd_start, *obd_end, end_side);
/* this stripe doesn't intersect the file extent when neither
* start or the end intersected the stripe and obd_start and
/* this stripe doesn't intersect the file extent when neither
* start or the end intersected the stripe and obd_start and
@@
-256,19
+263,20
@@
int lov_stripe_intersects(struct lov_stripe_md *lsm, int stripeno,
}
/* compute which stripe number "lov_off" will be written into */
}
/* compute which stripe number "lov_off" will be written into */
-int lov_stripe_number(struct lov_stripe_md *lsm,
obd_off
lov_off)
+int lov_stripe_number(struct lov_stripe_md *lsm,
loff_t
lov_off)
{
{
- unsigned long ssize = lsm->lsm_stripe_size;
- obd_off stripe_off, swidth;
- int magic = lsm->lsm_magic;
+ unsigned long ssize = lsm->lsm_stripe_size;
+ loff_t stripe_off;
+ loff_t swidth;
+ u32 magic = lsm->lsm_magic;
-
LASSERT(lsm_op_find(magic) != NULL);
-
lsm_op_find(magic)->lsm_stripe_by_offset(lsm, NULL, &lov_off, &swidth);
+ LASSERT(lsm_op_find(magic) != NULL);
+ lsm_op_find(magic)->lsm_stripe_by_offset(lsm, NULL, &lov_off, &swidth);
-
stripe_off = ll
_do_div64(lov_off, swidth);
+
stripe_off = lov
_do_div64(lov_off, swidth);
-
/* Puts stripe_off/ssize result into stripe_off */
-
do_div
(stripe_off, ssize);
+ /* Puts stripe_off/ssize result into stripe_off */
+
lov_do_div64
(stripe_off, ssize);
- return stripe_off;
+ return stripe_off;
}
}