# gfs_pio_set_view_index

## Name

gfs_pio_set_view_index -- fragment 単位のアクセスを指定する

## Synopsis

    #include <gfarm/gfarm.h>

```char *gfs_pio_set_view_index``(GFS_File `gf`, int `fragment_number`, int `fragment_index`, char *`host`, int `flags`);`

## DESCRIPTION

ファイルをフラグメント単位でアクセスすることを指定します。

新規作成したファイルの場合、必ず引数 `fragment_number` にフラグメント の総数を指定する必要があります。この値は、この並列ファイルを開く全て のノードで、同じ値でなくてはなりません。既存のファイルの場合には、 ここに `GFARM_FILE_DONTCARE` と書けば、指定を省略できます。もし もし実際と異なる数を指定した場合には、この関数はエラーで失敗します。

引数 `fragment_index` には、 アクセスするフラグメントの番号を指定します。

引数 `host` は、アクセスしたいホストを明示的に指定したい時に利用します。 指定が不要なら NULL を渡せば省略できます。

引数 `flag` には、 `GFARM_FILE_SEQUENTIAL` 、 `GFARM_FILE_REPLICATE` 、 `GFARM_FILE_NOT_REPLICATE` の論理和が指定できます。 これらは、下記を意味します。

`GFARM_FILE_SEQUENTIAL`

  このフラグメントに関してはシーケンシャル・アクセスのみを行なうこと を示します。

`GFARM_FILE_REPLICATE`

  あらかじめ、ローカル・ノードにレプリカを用意してからアクセスすることを 指定します。GFARM_FILE_NOT_REPLICATE とは排他的なオプションです。

`GFARM_FILE_NOT_REPLICATE`

  既にレプリカがある場合を除き、このノードにレプリカを用意しないこと を指定します。GFARM_FILE_REPLICATE とは排他的なオプションです。

この関数を呼ばない状態では、Gfarm ファイルは global view 状態となっており、全てのフラグメントが結合された単一ファイルに見えます。

## RETURN VALUES

`NULL`

  正常終了を示します。

`GFARM_ERR_NO_MEMORY`

  メモリ不足のため処理を中止しました。

`GFARM_ERR_OPERATION_NOT_PERMITTED`

  指定したパス名が、フラグメント化ファイルではありません。

`GFARM_ERR_FRAGMENT_NUMBER_DOES_NOT_MATCH`

  指定したフラグメント総数が、不適切です。

`GFARM_ERR_INVALID_ARGUMENT`

  関数引数が不適切です。たとえば、ファイルの新規作成時に、 フラグメント総数として `GFARM_FILE_DONTCARE` を指定すると、このエラーが生じます。

その他

  上記以外のエラーが生じたことを示します。

## SEE ALSO

gfs_pio_create(3), gfs_pio_open(3), gfs_pio_set_view_local(3)